2016-02-13 79 views
3

我正在使用WebRTC数据通道发送JSON数据。似乎工作正常的小数据包。但是,我试图发送一个更大的包(网页的HTML,base64编码,所以也许几百KB),它从来没有让它到另一端。WebRTC数据通道 - 最大数据大小?

是否有最大尺寸?

回答

6

我认为该规范没有对最大数据量说一句话。在实践中,16 KB是最大的。看看这个blog post,尤其是throughput/packet size图。这个结果已经通过实验获得,并且是允许webrtc实现之间最大兼容性的一个。

我已经设法在两个Firefox实例之间发送256 KB的数据包(如果内存正确地处理我的话,它的容量更大)。这是大约一年前,从那时起,实施可能已经改变了它的最大数据量。

如果你想发送大于16K的数据包,你必须首先对它们进行分段。碎片必须作为应用协议的一部分来实施。

+0

Argh。该死!有关如何实现碎片的任何建议? –

+1

好吧,最简单的方法是将一个大的内存缓冲区分成16K(甚至8K只是为了安全起见)块,然后将块,索引和块的总数作为消息发送。在接收端,您知道组块的总数,您只需等待,直到您收到来自数据通道的这些数量的消息。如果你想变得非常有趣,你甚至可以使用DC的无序模式。而且我会使用输入数组而不是base64编码。二进制数据由webrtc支持,恕我直言,没有理由浪费时间和空间来进行base64编码。 –

+0

非常感谢您的帮助。去试试这个:) –