Page 320 - Web性能权威指南
P. 320
表18-3:DataChannel的可靠性和交付模型配置
有序 可靠 部分可靠策略
有序 + 可靠 是 是 N/A
乱序 + 可靠 否 是 N/A
有序 + 部分可靠(重传) 是 部分 重传计数
乱序 + 部分可靠(重传) 否 部分 重传计数
有序 + 部分可靠(定时) 是 部分 超时(ms)
乱序 + 部分可靠(定时) 否 部分 超时(ms)
有序且可靠交付很好理解,就是 TCP。另一方面,乱序且可靠交付很有意思,它也
是 TCP,但没有队首阻塞问题(参见 2.4 节“队首阻塞”)。
配置部分可靠的信道时,关键是要记住两个重传策略是互斥的。换句话说,应用可
以指定超时重传,也可以指定计数重传,但不能同时指定两个策略;否则,就会报
错。好了,下面我们来看一看用于配置信道的 JavaScript API 吧:
conf = {}; ➊
conf = { ordered: false }; ➋
conf = { ordered: true, maxRetransmits: customNum }; ➌
conf = { ordered: false, maxRetransmits: customNum }; ➍
conf = { ordered: true, maxRetransmitTime: customMs }; ➎
conf = { ordered: false, maxRetransmitTime: customMs }; ➏
conf = { ordered: false, maxRetransmits: 0 }; ➐
var signalingChannel = new SignalingChannel();
var pc = new RTCPeerConnection(iceConfig);
...
var dc = pc.createDataChannel("namedChannel", conf); ➑
if (dc.reliable) {
...
} else {
...
}
➊ 默认为有序可靠交付(TCP)
➋ 可靠乱序交付
➌ 有序、部分可靠,使用自定义的重传计数
➍ 乱序、部分可靠,使用自定义的重传计数
➎ 有序、部分可靠,使用自定义的超时重传
➏ 乱序、部分可靠,使用自定义的超时重传
310 | 第 18 章