WebSocket: close() メソッド

WebSocket.close() メソッドは、 WebSocket の接続、もしくは接続試行(存在した場合)を閉じます。接続がすでに CLOSED だった場合、このメソッドは何もしません。

メモ: 接続を閉じるプロセスはクロージングハンドシェイクで始まり、 close() メソッドはそのクロージングハンドシェイクを開始する前に以前に送信したメッセージを破棄しません。たとえユーザーエージェントがまだそれらのメッセージを送信するのに忙しい場合でも、ハンドシェイクはメッセージが送信されてから開始されます。

構文

js
close()
close(code)
close(code, reason)

引数

code 省略可

整数の WebSocket 接続クローズコードの値で、閉じられた理由を示します。

  • 指定されていない場合、接続のクローズコードが自動的に設定されます。通常のクローズの場合は 1000 に、そうでなければ 1001-1015 の範囲の他の標準値に、接続が閉じられた実際の理由を示すコードが設定されます。
  • 指定された場合、この code 引数の値は、接続のためのクローズコードの自動設定を上書きし、代わりにカスタムコードを設定します。 この値は整数でなければなりません。 1000 か、あるいは 3000 から 4999 までの範囲で選択したカスタムコードでなければなりません。 code 値を指定する場合は、 reason 値も指定しなければなりません。
reason 省略可

独自の WebSocket 接続が閉じた理由を提供する文字列(閉じたことについて簡潔で人間が読める散文的な説明)。この値は 123 バイト以下でなければなりません(UTF-8 でエンコードされます)。

メモ: UTF-8 は 2 から 4 バイトを使用するため、 ASCII 以外の文字をエンコードすると、 123 文字の reason 値に ASCII 以外の文字が入っていると、 123 バイトの制限を超える可能性があります。

reason の値を指定する場合は、 code の値も指定してください。

返値

なし (undefined)。

例外

InvalidAccessError DOMException

code1000 と等しい整数でも、 30004999 の範囲の整数でもない場合に発生します。

SyntaxError DOMException

UTF-8 でエンコードされた reason が 123 バイトよりも長かった場合。

仕様書

Specification
WebSockets Standard
# ref-for-dom-websocket-close①

ブラウザーの互換性

BCD tables only load in the browser

関連情報

  • RFC 6455 (WebSocket プロトコル仕様書)