RTCDataChannel - 表示一个网络通道,可用于任意数据的双向对等传输

RTCDataChannel 接口表示一个网络通道,可用于任意数据的双向对等传输。每个数据通道都与一个 RTCPeerConnection 相关联,每个对等连接在理论上最多可以有 65,534 个数据通道(实际限制可能因浏览器而异)。

要创建数据通道并要求远程对等方加入,请调用 RTCPeerConnectioncreateDataChannel() 方法。被邀请交换数据的对等方收到一个 datachannel 事件(类型为RTCDataChannelEvent),以使其知道数据通道已添加到连接中。

事件

bufferedamountlow

当传出数据缓冲区中的数据字节数低于 bufferedAmountLowThreshold 指定的值时,触发通道的 onbufferedamountlow 事件处理程序。

close

基础数据传输关闭时,触发 onclose 事件处理程序。

error

当数据通道上发生错误时,触发 onerror 事件处理程序。

message

当从远程对等方收到消息时,触发 onmessage 事件处理程序。消息内容可以通过事件的 data 属性中获得。

open

首次打开数据通道或现有数据通道的基础连接重新打开时,触发 onopen 事件处理程序。

数据格式

基础数据格式由 IEEE 草案规范 draft-ietf-mmusic-sctp-sdp定义。当前格式将其协议指定为 "UDP/DTLS/SCTP"(UDP 承载 DTLS 的 SCTP)或 "TCP/DTLS/SCTP"(TCP 承载 DTLS 的 SCTP)。较旧的浏览器只能指定为 "DTLS/SCTP"

实例

var pc = new RTCPeerConnection();
var dc = pc.createDataChannel("我的通道");

dc.onmessage = function (event) {
  console.log("收到:" + event.data);
};

dc.onopen = function () {
  console.log("datachannel 打开");
};

dc.onclose = function () {
  console.log("datachannel 关闭");
};

规范

规范 状态 备注
WebRTC 1.0: Real-time Communication Between Browsers
RTCDataChannel 的定义
候选推荐 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持 支持 未知

24

18 — 601

不支持 支持 支持
binaryType 支持 未知18 不支持 支持 支持
bufferedAmount56 未知18 不支持43 支持
bufferedamountlow 事件572 未知 支持 不支持442 支持
bufferedAmountLowThreshold56 未知 支持 不支持43 支持
close56 未知 不支持 不支持43 不支持
close 事件56 未知 支持 不支持43 未知
error 事件56 未知 支持 不支持43 未知
id56 未知 不支持 不支持43 不支持
label56 未知 不支持 不支持43 不支持
maxPacketLifeTime56 未知62 不支持43 不支持
maxRetransmits56 未知62 不支持43 不支持
message 事件56 未知 支持 不支持43 未知
negotiated56 未知68 不支持43 不支持
onbufferedamountlow573 未知 支持 不支持443 支持
onclose56 未知 不支持 不支持43 不支持
onerror56 未知 不支持 不支持43 不支持
onmessage56 未知 不支持 不支持43 不支持
onopen56 未知 不支持 不支持43 不支持
open 事件56 未知 支持 不支持43 未知
ordered56 未知 不支持 不支持43 不支持
priority 不支持 未知 未知 不支持 未知 未知
protocol56 未知 不支持 不支持43 不支持
readyState56 未知 不支持 不支持43 不支持
reliable56 未知 不支持 不支持43 不支持
Support for sctp-sdp-21 format58 未知63 不支持 未知 不支持
send56 未知 不支持 不支持43 不支持
stream56 未知 不支持 不支持43 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持4.429 未知

24

18 — 601

未知 支持 不支持
binaryType4.429 未知18 未知 支持 不支持
bufferedAmount5656 未知18 未知43 不支持
bufferedamountlow 事件572572 未知 支持 未知432 不支持
bufferedAmountLowThreshold5656 未知 不支持 未知43 不支持
close5656 未知 不支持 未知43 不支持
close 事件5656 未知 支持 未知43 不支持
error 事件5656 未知 支持 未知43 不支持
id5656 未知 不支持 未知43 不支持
label5656 未知 不支持 未知43 不支持
maxPacketLifeTime5656 未知62 未知43 不支持
maxRetransmits5656 未知62 未知43 不支持
message 事件5656 未知 支持 未知43 不支持
negotiated5656 未知68 未知43 不支持
onbufferedamountlow573573 未知 支持 未知433 不支持
onclose5656 未知 不支持 未知43 不支持
onerror5656 未知 不支持 未知43 不支持
onmessage5656 未知 不支持 未知43 不支持
onopen5656 未知 不支持 未知43 不支持
open 事件5656 未知 支持 未知43 不支持
ordered5656 未知 不支持 未知43 不支持
priority 不支持 不支持 未知 未知 未知 未知 不支持
protocol5656 未知 不支持 未知43 不支持
readyState5656 未知 不支持 未知43 不支持
reliable5656 未知 不支持 未知43 不支持
Support for sctp-sdp-21 format5858 未知63 未知 未知 不支持
send5656 未知 不支持 未知43 不支持
stream5656 未知 不支持 未知43 不支持

1. 通过 DataChannel 支持。

2. rtcpMuxPolicy 的默认值是 require

3. rtcpMuxPolicy 的默认值是 require

相关链接