WebRTC 数据通道数据包是原子的吗?

Are WebRTC data channel packets atomic?

我想使用 WebRTC 数据通道在对等点之间交换 json 消息。

我可以安全地假设每条 json 消息都是原子地远程到达的吗(不像在 TCP 中,数据包可能被拆分或分块在一起)或者我是否需要实现类似长度前缀的东西来知道一条消息在哪里结束另一个开始?

如果相关的话,使用可靠的通道和可能的 tcp 转向服务器。

是的,根据 webRTC 规范草案,无论您 send() 通过数据通道发送什么消息,都应该在远端的单个 onmessage 回调中到达。

然而在现实生活中,Chrome 有时会在缓冲区用完时调用 onmessage 并显示部分消息。如果你保持你的消息 <64k 这似乎不会发生。