浏览器引擎是否会限制WebRTC的速度?

6

我正在使用PeerJS,它是WebRTC的JavaScript实现。 我将其用于通过DataChannel发送数据。

浏览器引擎是否有速度限制?

即使我的应用程序的两个实例都在同一台机器上运行,我也无法发送超过约20MB/s的数据。 可以使用Linux机器的系统监视器看到数据没有通过网络传输。 我已经尝试了Chrome和Firefox。

是否有人使用WebRTC数据通道体验到更快的速度? 我认为点对点连接应该是最快的数据传输方式,想知道这是我的实现问题还是协议问题。 我知道窗口大小对性能有很大影响。 有关于PeerJS的实践经验可以提供帮助吗?


1
我也遇到了这个问题。注意到WebTorrent、ShareDrop和其他一些工具在同一设备的不同浏览器标签之间传输时,速度都被限制在约30 MB/s左右。我创建了一个简单的演示,没有数据包排序,也没有重新传输丢失的数据,但它仍然无法超过30 MB/s:https://github.com/szimek/sharedrop/issues/154#issuecomment-1555905938。非常惊讶,因为我可以在我的互联网连接上从不同国家的远程服务器下载100 MB/s。CRBug问题在这里:https://bugs.chromium.org/p/chromium/issues/detail?id=1447329。 - joe
2个回答

0
如果你想要更快的下载速度,创建N*PeerConnection并发送文件可能会有所帮助。
你所尝试做的与单线程下载文件(TCP/IP)没有任何区别,除了传输协议不同。
你可以尝试在单线程下进行速度测试。

2
感谢您的回答。 我知道最弱的环节是使用2 * P2P连接的任何网络的上/下载速度。我不期望更多。然而,我正在同一设备上运行两个客户端,这将使最大速度在理论上取决于CPU和RAM速度。 20MB / s甚至没有达到那个速度的因素。 我还尝试了在同一千兆网络中使用两个不同的设备:速度更慢。 - dmuensterer
1
如果您只需要改进程序,调整UDP缓冲区大小可能会有所帮助,因为有许多因素。我刚刚检查了Google WebRTC的源代码,没有发现任何数据通道上的软限制。 - ssskip
@dmuensterer 也许你可以尝试将文件分成块,通过N*Peer发送而不修改其他内容。 - ssskip
1
CPU:禁用加密可能会有所帮助(如果没有硬件加速,则需要进行 CPU 密集型作业)--disable-webrtc-encryption。 - ssskip

0

2
谢谢你的回答。我已经阅读了它,但发现它并没有真正回答我的问题。具体来说,它没有涉及使用PeerJS的方面。 - dmuensterer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接