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