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

18.6.1 设置与协商

                 无论传输的是什么类型的数据(音频、视频,还是应用数据),通信两端必须首先
                 经过完整的提议 / 应答流程,协商要使用的协议和端口,成功完成连接检查(参见
                 18.4 节“建立端到端的连接”)。

                 事实上,正像我们现在已经知道的,传输媒体使用 SRTP,而 DataChannel 使用
                 SCTP 协议。因此,初始端在生成连接提议,或者另一端在生成应答时,它们两个
                 必须特意在生成的 SDP 字符串中包含 SCTP 关联的参数:

                    (……省略的内容……)
                     m=application 1 DTLS/SCTP 5000 ➊
                     c=IN IP4 0.0.0.0 ➋
                     a=mid:data
                     a=fmtp:5000 protocol=webrtc-datachannel; streams=10 ➌
                    (……省略的内容……)

                 ➊ 告知对方想使用 DTLS 之上的 SCTP
                 ➋ 0.0.0.0 候选项表示使用增量 ICE
                 ➌ SCTP 之上的 DataChannel 协议,最多 10 个并行流

                 跟 以 前 一 样, 只 要 任 意 一 端 在 生 成 会 话 的 SDP 描 述 前 注 册 DataChannel,
                 RTCPeerConnection 就会负责生成 SDP 参数。实际上,应用通过明确设置禁用音频
                 和视频传输的约束,可以建立只传输数据的端到端连接:

                     var signalingChannel = new SignalingChannel();
                     var pc = new RTCPeerConnection(iceConfig);
                     var dc = pc.createDataChannel("namedChannel", {reliable: false}); ➊

                     var mediaConstraints = { ➋
                       mandatory: {
                           OfferToReceiveAudio: false,
                           OfferToReceiveVideo: false
                       }
                     };
                     pc.createOffer(function(offer) { ... }, null, mediaConstraints); ➌

                     ...

                 ➊ 通过 RTCPeerConnection 注册新的不可靠的 DataChannel
                 ➋ 设置媒体约束,以禁用音频和视频传输
                 ➌ 生成只传输数据的提议



                                                                              WebRTC   |   307
   312   313   314   315   316   317   318   319   320   321   322