Page 319 - Web性能权威指南
P. 319
}
});
signalingChannel.onmessage = function(msg) {
if (msg.newchannel) { ➌
dc = pc.createDataChannel(msg.label, msg.options);
}
}
➊ 通过发信通道向另一端发送信道配置
➋ 唯一的应用指定的信道 ID(整数)
➌ 用接收到的参数初始化新 DataChannel
实践中,如果通信端的数量不多,使用外部协商的性能优势并不明显。这时候,
还是让 RTCPeerConnection 对象帮我们完成协商更好。然而,在通信端的数量很
多的情况下,发信服务器可以生成相同的描述,同时将它们分发给所有通信端。
此时,这种工作流就能派上用场。
18.6.2 配置消息次序和可靠性
DataChannel 可以让我们使用兼容 WebSocket 的 API 端到端地传输任意数据,就其本
身而言,这绝对是独一无二而且十分强大的功能。可是,DataChannel 还支持一种
灵活得多的传输方式,因此我们可以自定义每个信道的交付语义,以满足应用和要
传输的数据类型的需要:
• DataChannel 可以有序或乱序交付消息;
• DataChannel 可以可靠或部分可靠地交付消息。
当然,要把信道配置成有序且可靠交付,那就与 TCP 无异了:与常规的 WebSocket
交付效果相同。然而,DataChannel 还为每个信道配置部分可靠性提供了两个选择:
• 通过重传实现部分可靠交付
消息的重传次数由应用指定。
• 通过超时实现部分可靠交付
消息的重传间隔(ms)由应用指定。
这两个选择都由 WebRTC 客户端实现,意味着应用所要做的,只是决定使用什么交
付模型,然后对信道设置正确的参数即可。应用不管理计时器或重传计数器。下面
我们再介绍一下配置选项(表 18-3)。
WebRTC | 309