Page 315 - Web性能权威指南
P. 315

在内部网等受控的环境下,SCTP 的性能很好。很多移动运营商都使用 SCTP 传输
                   来自无线电发射塔的数据,直到穿过其核心网络传输到公共互联网。要了解这方面
                   的更多信息,请参考这个链接:http://tools.ietf.org/html/draft-ietf-behave-sctpnat。



                 18.6 DataChannel

                 DataChannel 支持端到端的任意应用数据交换,就像 WebSocket 一样,但是端到端
                 的,而且可以定义底层传输协议的交付属性。建立 RTCPeerConnection 连接之后,
                 两端可以打开一或多个信道交换文本或二进制数据:

                     function handleChannel(chan) { ➊
                       chan.onerror = function(error) { ... }
                       chan.onclose = function() { ... }

                       chan.onopen = function(evt) {
                         chan.send("DataChannel connection established. Hello peer!")
                       }

                       chan.onmessage = function(msg) {
                         if(msg.data instanceof Blob) {
                           processBlob(msg.data);
                         } else {
                           processText(msg.data);
                         }
                       }
                     }

                     var signalingChannel = new SignalingChannel();
                     var pc = new RTCPeerConnection(iceConfig);

                     var dc = pc.createDataChannel("namedChannel", {reliable: false}); ➋

                     ... ➌
                     handleChannel(dc); ➍
                     pc.onDataChannel = handleChannel; ➎

                 ➊ 在 DataChannel 对象上注册类似 WebSocket 的回调
                 ➋ 以最合适的交付语义初始化新的 DataChannel
                 ➌ 常规的 RTCPeerConnection 提议 / 应答代码
                 ➍ 在本地初始化的 DataChannel 上注册回调
                 ➎ 在远端初始化的 DataChannel 上注册回调

                 DataChannel API 有意照搬 WebSocket:每个信道都会触发同样的 onerror、onclose、onopen


                                                                              WebRTC   |   305
   310   311   312   313   314   315   316   317   318   319   320