[14] WebSocket の接続は、 TCP または TLS over TCP 上に確立されたWebSocketクライアントと WebSocketサーバーとの間の転送路です。
[5] 接続は、通常のHTTP接続の状態に加え、次の状態を持ちます。
[10] クライアントは (WebSocket
オブジェクトは)、
更に次の状態を持ちます。
[15] アプリケーションは、更に独自の状態を保持するかもしれません。
その中には TCP/TLS や WebSocket handshake で得られた情報
(例えば IPアドレス、TLS証明書、HTTP認証データ、Cookie、
Accept-Language:
など) も含まれるかもしれません。
WebSocket
インターフェイス readyState
属性[6] WebSocket
インターフェイスの
readyState
属性は、
WebSocket接続の状態を表します。
[7] WebSocket
インターフェイスには
4つの unsigned short
型の定数が定義されています >>4。
そのいずれかを返すことになっています。
[9] これらの属性値の変更は、WebSocket接続の確立や WebSocket接続を閉じるの処理の中で行われます。
[8] これらの定数は HTML Standard で規定されています。 RFC 6455 でも定数名は言及されていますが、それが何であるかは全く説明がありません。
[11] WebSocket とスクリプト (イベントループ) は別個に動作します。
WebSocket接続の状態としてプロトコル側が保持している値と
readyState
属性値は、更新されるタイミングが異なることがあります。
[12] WebSocket
のごみ収集は、event loop step 1
時点での readyState
の状態によって処理します。
[1] WebSocket接続の確立を参照。
[3] WebSocketソケット、データソケットを参照。
[2] WebSocket接続を閉じるを参照。
[16] WebSocket の下位層としては、 TCP または TLS over TCP を用いることになっています。
[17] ただし TCP そのものではなく、プロキシへの接続 (SOCKS や HTTP など) が使われる可能性もあります。
[21] TCP の利用方法は、 WebSocket接続を閉じる際の処理が規定されている他は明確になっていません。 例えば TCP 緊急データをどう扱うべきかは不明です。