RTCDataChannel:readyState 属性

只读的 RTCDataChannel 属性 readyState 返回一个字符串,该字符串指示数据通道底层数据连接的状态。

一个指示底层数据传输当前状态的字符串,其值为以下值之一

connecting

用户代理(浏览器)正在创建底层数据传输;这是在 RTCPeerConnection.createDataChannel() 创建新的 RTCDataChannel 之后的状态,在发起连接过程的对等方上。

open

底层数据传输已建立,并且可以双向传输数据。这是 WebRTC 层创建的新 RTCDataChannel 的默认状态,当远程对等方创建通道并将其传递到站点或应用程序的 datachannel 事件中时。

closing

关闭底层数据传输的过程已开始。不再可能将新消息排队发送,但在进入 closed 状态之前,先前排队的消息可能仍会被发送或接收。

closed

底层数据传输已关闭,或建立连接的尝试失败。

示例

js
const dataChannel = peerConnection.createDataChannel("File Transfer");
const sendQueue = [];

function sendMessage(msg) {
  switch (dataChannel.readyState) {
    case "connecting":
      console.log(`Connection not open; queueing: ${msg}`);
      sendQueue.push(msg);
      break;
    case "open":
      sendQueue.forEach((msg) => dataChannel.send(msg));
      break;
    case "closing":
      console.log(`Attempted to send message while closing: ${msg}`);
      break;
    case "closed":
      console.log("Error! Attempt to send while connection closed.");
      break;
  }
}

规范

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

浏览器兼容性

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

另请参阅