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 章
   315   316   317   318   319   320   321   322   323   324   325