RTCDataChannel
Baseline 广泛可用 *
RTCDataChannel 接口表示一个可以用于双向点对点传输任意数据的网络通道。每个数据通道都与一个 RTCPeerConnection 相关联,并且每个对等连接最多可以拥有理论上 65,534 个数据通道(实际限制可能因浏览器而异)。
要创建数据通道并邀请远程对等方加入,请调用 RTCPeerConnection 的 createDataChannel() 方法。被邀请交换数据的对等方将收到一个 datachannel 事件(类型为 RTCDataChannelEvent),以告知它数据通道已添加到连接中。
RTCDataChannel 是一个 可转移对象。
实例属性
还继承了 EventTarget 的属性。
binaryType-
一个字符串,指定在
RTCDataChannel上接收二进制数据时应使用的对象类型。值与WebSocket.binaryType属性允许的值相同:如果使用Blob对象,则为blob;如果使用ArrayBuffer对象,则为arraybuffer。默认值为arraybuffer。 bufferedAmount只读-
返回当前排队待通过数据通道发送的数据字节数。
bufferedAmountLowThreshold-
指定缓冲区中的出站数据量被视为“低”的字节数。默认值为 0。
id只读-
返回一个唯一标识
RTCDataChannel的 ID 号(介于 0 和 65,534 之间)。 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 |
浏览器兼容性
加载中…