メインコンテンツまでスキップ

7. Closing the Connection (接続のクローズ)

7.1 Definitions (定義)​

7.1.1 Closing the WebSocket Connection (WebSocket接続のクローズ)​

WebSocket接続をクローズすることは、基盤となるTCP接続をクローズすることを意味します。

7.1.2 Start the WebSocket Closing Handshake (WebSocketクロージングハンドシェイクの開始)​

クロージングハンドシェイクを開始するためにClose制御フレームを送信します。

7.1.3 The WebSocket Closing Handshake is Started (WebSocketクロージングハンドシェイクが開始された)​

どちらかのエンドポイントがCloseフレームを送信すると、ハンドシェイクが開始されます。

7.1.4 The WebSocket Connection is Closed (WebSocket接続がクローズされた)​

基盤となるTCP接続がクローズされると、接続はクローズされたとみなされます。

7.1.5 The WebSocket Connection Close Code (WebSocket接続クローズコード)​

Closeフレームに含まれるステータスコード。

7.1.6 The WebSocket Connection Close Reason (WebSocket接続クローズ理由)​

Closeフレーム内のオプションのテキスト理由。

7.1.7 Fail the WebSocket Connection (WebSocket接続の失敗)​

エラーのため、Closeフレームを送信せずに直ちに接続をクローズします。

7.2 Abnormal Closures (異常クローズ)​

7.2.1 Client-Initiated Closure (クライアント開始のクローズ)​

クライアントがエラーを検出した場合、接続をクローズすべきです。

7.2.2 Server-Initiated Closure (サーバー開始のクローズ)​

サーバーがエラーを検出した場合、接続をクローズすべきです。

7.2.3 Recovering from Abnormal Closure (異常クローズからの回復)​

アプリケーションは再接続メカニズムを実装すべきです。

7.3 Normal Closure of Connections (接続の正常クローズ)​

正常クローズプロセス:

  1. 開始側がCloseフレームを送信
  2. 受信側がCloseフレームを受信後、Closeフレームレスポンスを送信
  3. 受信側がTCP接続をクローズ
  4. 開始側もCloseフレーム受信後にTCP接続をクローズ
// クライアント正常クローズ
ws.close(1000, 'Normal closure');

// サーバー側の処理
ws.on('close', (code, reason) => {
console.log(`接続がクローズされました: ${code} - ${reason}`);
});

7.4 Status Codes (ステータスコード)​

7.4.1 Defined Status Codes (定義されたステータスコード)​

コード名前説明
1000Normal Closure正常クローズ
1001Going Awayエンドポイントの離脱(ページナビゲーションなど)
1002Protocol Errorプロトコルエラー
1003Unsupported Dataサポートされていないデータタイプ
1005No Status Rcvd予約済み、Closeフレームで使用すべきではない
1006Abnormal Closure予約済み、異常な接続クローズを示す
1007Invalid frame payload data無効なフレームペイロードデータ(無効なUTF-8など)
1008Policy Violationポリシー違反
1009Message Too Bigメッセージが大きすぎる
1010Mandatory Ext.クライアントが期待した拡張がネゴシエートされていない
1011Internal Errorサーバー内部エラー
1015TLS handshakeTLSハンドシェイク失敗(予約済み)

7.4.2 Reserved Status Code Ranges (予約済みステータスコード範囲)​

  • 0-999: 未使用
  • 1000-2999: プロトコル定義
  • 3000-3999: ライブラリ/フレームワーク使用
  • 4000-4999: アプリケーション使用

Closeフレーム構造​

+--------+--------+------------------+
| Status | Reason |
| Code | (オプション) |
| (2バイト)| (UTF-8テキスト) |
+--------+--------+------------------+

参考リンク​