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 的浏览器中加载。