WebSocketStream: opened 属性
注意:此功能在 Web Workers 中可用。
WebSocketStream
接口的只读属性 opened
返回一个 Promise
,该 Promise 在 socket 连接成功打开后 fulfilled,并包含一个对象。该对象除了其他功能外,还包含一个用于在连接上接收和发送数据的 ReadableStream
和一个 WritableStream
实例。
值
一个 Promise,它 fulfilled 后会返回一个包含以下属性的对象:
扩展
-
一个字符串,表示应用于
WebSocketStream
的任何扩展。目前尚未定义此类扩展,但未来可能会定义。当前返回空字符串。 协议
-
一个字符串,表示用于打开当前 WebSocket 连接的子协议(从
WebSocketStream()
构造函数的protocols
选项中选择)。如果未使用任何子协议打开连接(即,构造函数调用中未包含任何子协议选项),则返回空字符串。 readable
-
一个
ReadableStream
实例。在其上调用ReadableStream.getReader()
以获取一个ReadableStreamDefaultReader
实例,该实例可用于读取传入的 WebSocket 数据。 可写
-
一个
WritableStream
实例。在其上调用WritableStream.getWriter()
以获取一个WritableStreamDefaultWriter
实例,该实例可用于将数据写入 WebSocket 连接。
如果 WebSocket 连接失败,Promise 将 rejected。
示例
const wsURL = "wss://127.0.0.1/";
const wss = new WebSocketStream(wsURL);
async function start() {
const { readable, writable, extensions, protocol } = await wss.opened;
const reader = readable.getReader();
const writer = writable.getWriter();
writer.write("ping");
while (true) {
const { value, done } = await reader.read();
if (done) {
break;
}
setTimeout(() => {
writer.write("ping");
}, 5000);
}
}
有关完整示例和详细说明,请参阅 使用 WebSocketStream 编写客户端。
规范
目前不是任何规范的一部分。有关标准化进展,请参阅 https://github.com/whatwg/websockets/pull/48。
浏览器兼容性
加载中…
另见
- WebSocketStream:将流与 WebSocket API 集成,developer.chrome.com (2020)