RTCDataChannel
RTCDataChannel
接口表示一个网络通道,可用于任意数据的双向点对点传输。每个数据通道都与一个 RTCPeerConnection
关联,并且每个对等连接最多可以拥有理论上 65,534 个数据通道(实际限制可能因浏览器而异)。
要创建数据通道并请求远程对等方加入,请调用 RTCPeerConnection
的 createDataChannel()
方法。被邀请交换数据的对等方会收到一个 datachannel
事件(类型为 RTCDataChannelEvent
),以告知数据通道已添加到连接中。
RTCDataChannel
是一个 可传输对象。
实例属性
还继承了 EventTarget
的属性。
binaryType
-
一个字符串,指定用于表示在
RTCDataChannel
上接收到的二进制数据的对象的类型。值与WebSocket.binaryType
属性允许的值相同:如果使用Blob
对象,则为blob
;如果使用ArrayBuffer
对象,则为arraybuffer
。默认值为blob
。 bufferedAmount
只读-
返回当前排队等待通过数据通道发送的数据的字节数。
bufferedAmountLowThreshold
-
指定被视为“低”的缓冲输出数据的字节数。默认值为 0。
id
只读-
返回一个 ID 号码(介于 0 和 65,534 之间),该号码唯一标识
RTCDataChannel
。 label
只读-
返回一个包含描述数据通道名称的字符串。这些标签不需要唯一。
maxPacketLifeTime
只读-
返回浏览器尝试传输消息允许花费的时间(以毫秒为单位),如创建数据通道时设置的那样,或
null
。 maxRetransmits
只读-
返回浏览器在放弃之前应尝试重新传输消息的最大次数,如创建数据通道时设置的那样,或
null
,表示没有最大值。 negotiated
只读-
指示
RTCDataChannel
的连接是由 Web 应用程序 (true
) 协商还是由 WebRTC 层 (false
) 协商。默认为false
。 ordered
只读-
指示数据通道是否保证按顺序传递消息;默认为
true
,表示数据通道确实是有序的。 protocol
只读-
返回一个包含正在使用的子协议名称的字符串。如果在创建数据通道时未指定任何协议,则此属性的值为空字符串 (
""
)。 readyState
只读-
返回一个字符串,指示数据通道的基础数据连接的状态。它可以具有以下值之一:
connecting
、open
、closing
或closed
。
已弃用的属性
reliable
只读 已弃用 非标准-
指示数据通道是否可靠。
实例方法
还继承了 EventTarget
的方法。
事件
bufferedamountlow
-
当传出数据缓冲区中的数据字节数低于
bufferedAmountLowThreshold
指定的值时发送。 close
-
当基础数据传输关闭时发送。
closing
-
当基础数据传输即将开始关闭时发送。
error
-
当数据通道发生错误时发送。
message
-
当从远程对等方收到消息时发送。消息内容可以在事件的
data
属性中找到。 open
-
当数据通道首次打开或现有数据通道的基础连接重新打开时发送。
数据格式
基础数据格式由 IEEE 规范 SDP Offer/Answer Procedures for SCTP over DTLS Transport(RFC 8841) 定义。当前格式将协议指定为 "UDP/DTLS/SCTP"
(UDP 承载 DTLS 承载 SCTP)或 "TCP/DTLS/SCTP"
(TCP 承载 DTLS 承载 SCTP)。旧版浏览器可能仅指定 "DTLS/SCTP"
。
示例
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");
dc.onmessage = (event) => {
console.log(`received: ${event.data}`);
};
dc.onopen = () => {
console.log("datachannel open");
};
dc.onclose = () => {
console.log("datachannel close");
};
规范
规范 |
---|
WebRTC:浏览器中的实时通信 # rtcdatachannel |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。