webRTC 数据通道消息的最大大小是多少?

Posted

技术标签:

【中文标题】webRTC 数据通道消息的最大大小是多少?【英文标题】:What is the maximum size of webRTC data channel messages? 【发布时间】:2013-03-04 07:52:05 【问题描述】:

我正在尝试使用 webRTC,似乎每条消息可以发送多少字节是任意限制的。 This guy 我使用的示例选择了 100(加上一些)字节的限制。在我的测试中,它似乎接近 200 字节。然而,从 TCP 和 UDP 的阅读来看,这些协议支持高达 65kb 左右的包,即使考虑到不同类型网络的 MTU,它的可用空间仍然应该比约 200 字节多得多。

我发现提到硬限制的唯一来源是 this WebRTC Data Channel Protocol draft,但它只说 TBD。

所以我的问题是:

    是否有任何来源指定任何浏览器中的当前消息大小限制? 如果我可以假设限制始终相同,如果不能,是否有任何方法可以让我的应用了解限制?

【问题讨论】:

如果其他人发现这个有类似问题,我发现了一些几乎相关的信息。目前 chrome 将流量限制在大约 3kbps 以代替拥塞检测。当他们弄清楚如何检测到这个限制时,据说这个限制会被删除。我不确定我遇到的问题是否是由此引起的。 我正在处理同样的问题。 Firefox 有限制吗? Firefox 似乎没有这个限制,甚至支持发送 Blob。但是使用 Firefox 我无法在选项卡/浏览器之间建立连接... 2016 年有什么值得了解的更新吗? 【参考方案1】:

sharefest 项目找到了一种绕过速率限制的方法 - 您可以修改传出报价以更改带宽设置(根据 http://www.ietf.org/rfc/rfc2327.txt)

详情请看:https://github.com/Peer5/ShareFest/blob/master/public/js/peerConnectionImplChrome.js#L201

根据我自己的经验,每条消息仍被限制为 ~800 字节。

【讨论】:

谢谢!有机会我会尽快尝试。 似乎有效!大文件使选项卡崩溃,但我认为这是由我的特定实现引起的。 您是否要一次加载整个文件?使用切片来逐位读取文件:html5rocks.com/en/tutorials/file/dndfiles 了解切片概述,我自己的项目 hcliff.github.com/ampere 了解更多与处理大文件和 webrtc 相关的内容:) 是的,我正在对文件进行切片,但是“大”文件只有 100kB,所以这不是问题所在(我怀疑我的 torrent-ish 方法与您的相似,但在一个更具实验性的状态)。我敢肯定,当我有时间再次深入研究它时,我会弄清楚的。 留给后代:github.com/Peer5/ShareFest/blob/…【参考方案2】:

我一直在测试通过数据通道将 jpegs 发送到 chrome 57,现在看来高达 64k 的消息是可靠的。

webRTC 数据通道确实具有可靠性机制,它使用 SCTP over DTLS(通过 UDP) - SCTP 允许您设置可靠性和排序行为,但默认情况下 WebRTC 使用有序+可靠 - 这意味着您可以获得与 TCP 相似的语义- 至少在理论上保留了消息边界。

实际上,如果空间不足,Chrome 可能会将部分消息传递到 javascript,因此最好在处理之前检查您是否有完整的消息。

【讨论】:

以上是关于webRTC 数据通道消息的最大大小是多少?的主要内容,如果未能解决你的问题,请参考以下文章

WebRTC 有多少个通道以及使用了哪些传输?

WebRTC 数据通道类型不匹配

NSQ 消息的最大大小是多少?

为 Windows 应用程序实现 webrtc 数据通道 [关闭]

通过 Google IoT 核心发布/订阅消息的最大有效负载大小是多少?

Android 上 SQLite 数据库的最大大小是多少?