WebSocket:持続的な双方向Web接続の仕組み
WebSocketは、HTTPベースのオープニングハンドシェイクを経て、長時間維持される双方向の接続を確立します。チャット、通知、リアルタイムデータに適していますが、それでもプロキシ、ロードバランサー、ネットワークのタイムアウトによってセッションが切断されることがあります。
持続的なWebSocket接続の仕組み
WebSocketは、HTTPベースのオープニングハンドシェイクのあとに、持続的な双方向のアプリケーション通信路を確立します。安全なwssスキームではTLSで接続が保護されますが、中継機器やアイドルタイムアウトによって長時間のセッションが切断されることは変わりません。
切断の原因を調べる方法
最初のHTTPレスポンスを確認して接続のアップグレードが成功していることを確かめ、そのうえで、一定のアイドル時間が経つと毎回切断されるかを観察します。リバースプロキシ、ロードバランサー、ファイアウォールには、長時間のWebSocketセッションに影響するタイムアウトが設定されていることがよくあります。まず基本的なTCPの到達性を切り分けたい場合は、2IPのポート開放確認でポートをチェックしましょう。
アイドルタイムアウトの設定箇所を探す
技術資料:RFC 6455