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