常见问题 #
为什么 WebRTC 使用 UDP?
NAT 穿透需要 UDP。没有 NAT 穿透,就无法建立 P2P 连接。UDP 不像 TCP 那样 " 保证送达 “,因此 WebRTC 在用户级别提供这一特性。
要了解更多信息,请参考 连接 章节。
数据通道最多可以有几个?
因为流标识符有 16 位,所以最多有 65534 个通道。你可以随时关闭再创建一个新的。
WebRTC 是否有带宽限制?
数据通道和 RTP 都使用拥塞控制。这意味着 WebRTC 会主动测量你的带宽并尝试使用最佳数值。这是一种平衡措施,这样可以尽量发送数据,而不会使网络连接过载。
我可以发送二进制数据吗?
是的,你可以通过数据通道发送文本和二进制数据。
WebRTC 延迟怎么样?
对于未作调整的媒体,估计不到 500 毫秒。如果你愿意为延迟调整或牺牲音质 / 画质,有开发人员将延迟降到了 100ms 以下。
数据通道支持 " 部分可靠性 " 选项,该选项可以减少由于有损连接上的数据重传而引起的延迟。如果配置正确的话,速度可以超过 TCP TLS 连接。
什么情况下我会需要无序交付的数据通道?
有时,新的信息会淘汰旧的信息(例如对象的位置信息);或者,每个消息都是彼此独立的,并且你需要避免行头阻塞延迟。
我可以通过数据通道发送音频或视频吗?
是的,你可以通过数据通道发送任何数据。如果是在浏览器中这样使用,你就需要自行对数据进行解码,然后将其传递给媒体播放器进行渲染;在使用媒体通道时,这部分是自动完成的。