質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

Q&A

1回答

25054閲覧

websocketのコネクション切断時の処理について

退会済みユーザー

退会済みユーザー

総合スコア0

WebSocket

WebSocketとは双方向・全二重コミュニケーションのためのAPIでありプロトコルのことを指します。WebSocketはHTML5に密接に結びついており、多くのウェブブラウザの最新版に導入されています。

0グッド

0クリップ

投稿2015/12/24 06:51

クライアント(アプリ)とのWebSocketハンドシェイク成功後に、アプリをバックグラウンドに置いたりすると、
コネクションが切れてサーバー側ではwebsocketのclose処理が呼ばれます。
この挙動は検証で既にわかっているのですが、例えばクライアントが急に圏外になったり、電源が切れたりした場合でも、サーバー側のclose処理でハンドリングできるのでしょうか。

様々な情報を調べたのですが、切断に関してはっきりとした情報は現時点では見つかっていません。
もしよろしければ詳しい仕様が載っているサイトなども合わせてご紹介いただけると嬉しいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

クライアント側での明示的なclose()処理の場合、モバイル端末の圏外状態、電池切れなどの障害を含め、サーバー側では onclose イベントが発生しますし、切断原因は CloseEvent.code の値で識別できます。

MDNのこの記事にざっくりとした説明と切断原因コードの一覧があります。また、websocketのクローズ処理については、正常系、異常系の詳しいシナリオが RFC6455のここで説明されていますので、適宜参照を。
簡単に言うと、相手側が明示的に close() を実行した場合は、1000 (CLOSE_NORMAL) が通知され、圏外や電池切れ(つまり一定時間を超えて無通信状態が続いた場合)は 1006 (CLOSE_ABNORMAL) が通知されます。(ただし、websocket の実装により 1006 以外が通知されるかもしれません。)

ご参考になりますでしょうか。

投稿2015/12/25 07:41

tkanda

総合スコア2425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問