RTCDataChannel: close() 方法

RTCDataChannel.close() 方法关闭 RTCDataChannel。任何一方都可以调用此方法来启动通道的关闭。

数据通道的关闭不是即时的。关闭连接的大部分过程都是异步处理的;您可以通过监视数据通道上的 close 事件来检测通道何时完成关闭。

调用此方法后发生的事件序列

  1. RTCDataChannel.readyState 设置为 closing
  2. 建立一个后台任务来处理以下剩余步骤,并且 close() 返回给调用者。
  3. 传输层处理任何缓冲的消息;协议层决定是否发送或丢弃它们。
  4. 关闭底层数据传输。
  5. RTCDataChannel.readyState 属性设置为 closed
  6. 如果传输以错误方式关闭,则 RTCDataChannel 将收到一个 error 事件,其 name 设置为 NetworkError
  7. 一个 close 事件发送到通道。

语法

js
close()

参数

无。

返回值

无 (undefined)。

示例

js
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");

dc.onmessage = (event) => {
  console.log(`received: ${event.data}`);
  dc.close(); // We decided to close after the first received message
};

dc.onopen = () => {
  console.log("datachannel open");
};

dc.onclose = () => {
  console.log("datachannel close");
};

// Now negotiate the connection and so forth…

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcdatachannel-close

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅