WebSocketStream: opened property
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Note: This feature is available in Web Workers.
The opened read-only property of the
WebSocketStream interface returns a Promise that fulfills with an object once the socket connection is successfully opened. Among other features, this object contains a ReadableStream and a WritableStream instance for receiving and sending data on the connection.
Value
A promise, which fulfills with an object containing the following properties:
extensions-
A string representing any extensions applied to the
WebSocketStream. Such extensions are not currently defined, but may be in the future. Currently returns an empty string. protocol-
A string representing the sub-protocol used to open the current WebSocket connection (chosen from the options specified in the
protocolsoption of theWebSocketStream()constructor). Returns an empty string if no sub-protocol has been used to open the connection (i.e., no sub-protocol options were included in the constructor call). readable-
A
ReadableStreaminstance. CallReadableStream.getReader()on it to obtain aReadableStreamDefaultReaderinstance that can be used to read incoming WebSocket data. writable-
A
WritableStreaminstance. CallWritableStream.getWriter()on it to obtain aWritableStreamDefaultWriterinstance that can be used to write data to the WebSocket connection.
The promise rejects if the WebSocket connection fails.
Examples
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);
}
}
See Using WebSocketStream to write a client for a complete example with full explanation.
Specifications
Not currently a part of any specification. See https://github.com/whatwg/websockets/pull/48 for standardization progress.
Browser compatibility
Loading…
See also
- WebSocketStream: integrating streams with the WebSocket API, developer.chrome.com (2020)