WebSocketStream: WebSocketStream() コンストラクター
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
メモ: この機能はウェブワーカー内で利用可能です。
WebSocketStream() コンストラクターは、新しい WebSocketStream オブジェクトインスタンスを生成します。
構文
new WebSocketStream(url)
new WebSocketStream(url, options)
引数
url-
文字列で、この
WebSocketStreamインスタンスで接続する WebSocket サーバーの URL を表します。許可される URL スキームは"ws"、"wss"、"http"、"https"です。 options省略可-
次のプロパティが含まれているオブジェクトです。
protocols省略可-
単一の文字列または文字列の配列で、クライアントが使用したいサブプロトコルを表します。例えば
"amqp"や"mqtt"などです。サブプロトコルは、IANA WebSocket Subprotocol Name Registry から選択するか、クライアントとサーバー間で合意された独自の名前を使用することもできます。単一のサーバーで複数の WebSocket サブプロトコルを実装し、指定された値に応じて異なる種類のやり取りを処理できます。省略した場合、既定では空の配列が使用されます。protocolsが含まれており、かつサーバーがこれらのサブプロトコルのいずれかを選択したと報告した場合にのみ、接続が確立されます。 signal省略可-
AbortSignalで、ハンドシェイクが完了する前(つまり、openedプロミスが解決する前)に接続を中止するために使用できるものです。これは主に接続タイムアウトを実装するのに役立つものです。そのため、接続が確立された後では何も行いません。
例外
SyntaxErrorDOMException-
URL スキームが
"ws"、"wss"、"http"、"https"のいずれでもない場合に発生します。
例
WebSocketStream を作成
最も基本的な例は、 WebSocket サーバーの URL を引数として取ります。
const wss = new WebSocketStream("wss://example.com/wss");
WebSocketStream を接続タイムアウト付きで作成
次の例では、signal オプションを使用して、接続が 5 秒以内に確立されない場合のタイムアウトを実装しています。
const queueWSS = new WebSocketStream("wss://example.com/queue", {
signal: AbortSignal.timeout(5000),
});
localhost に接続する場合、接続試行がタイムアウトする前に成功または失敗する可能性が高いことに注意してください。
接続が確立されると、 signal は何も効果がありません。既に確立された接続を閉じるには、WebSocketStream.close() メソッドを呼び出してください。基盤となる WritableStream または WritableStreamDefaultWriter を閉じることで、ソケットを閉じることも可能です。
全ての説明付きの完全な例については、 WebSocketStream でクライアントを書くを参照してください。
仕様書
現在、どの仕様にも属していません。標準化の進捗状況については https://github.com/whatwg/websockets/pull/48 を参照してください。
ブラウザーの互換性
関連情報
- WebSocketStream: integrating streams with the WebSocket API, developer.chrome.com (2020)