WebSocket: close() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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 プロトコル仕様書)