【うぇぶそけっと】

WebSocket とは?

最終更新:
💡 つないだ後は、両側からメッセージを送れる

クライアントとサーバーが、確立した接続上で互いにメッセージを送れる通信プロトコル。チャットや共同編集などに使われる。通信を保護するwssもあり、切断への対応や認証・権限管理は別に設計する。

📌 このページのポイント
WebSocket:接続後は両側から送れるHTTPの通常の要求・応答ブラウザーサーバー要求応答WebSocketの接続確立後ブラウザーサーバーメッセージメッセージHTTPも接続を再利用できるよ
矢印はメッセージの送信方向。WebSocketは接続確立後に両側から送れる。HTTPを毎回の接続・切断や一方向だけの通信と同一視しない。
ひよこ ひよこ
HTTPとの違いは、毎回つなぎ直さないこと?
ペンギン先生 ペンギン先生
中心はメッセージのやり取りの方法だよ。通常のHTTPは要求に応答する。WebSocketは接続を確立した後、両側から送れるんだ。ただしHTTP/1.1も接続を再利用できるので、毎回切断するものとは考えないでね。
ひよこ ひよこ
どんなときに役立つの?
ペンギン先生 ペンギン先生
チャットでメッセージを送受信したり、共同編集で変更を伝え合ったりする場面だね。株価などの更新にも使える。ただし速さは通信や処理に左右され、リアルタイム表示のサービスがすべてWebSocketを使うわけではないよ。
ひよこ ひよこ
サーバーから受け取るだけでも必要?
ペンギン先生 ペンギン先生
HTTP上のServer-Sent Events(SSE)でも、サーバーから継続して通知できるよ。WebSocketは同じ接続で両側が送れるのが特徴。送る方向や必要な機能で選ぶとよいね。
ひよこ ひよこ
接続すれば、切れても自動で元どおり?
ペンギン先生 ペンギン先生
標準のWebSocket APIだけで再接続や未受信メッセージの復元が完了するわけではないよ。切断時の処理や送受信量を設計する。wssはTLSで通信を保護するが、誰が何を操作できるかの確認も必要なんだ。
ひよこ ひよこ
Socket.IOを使えば、同じものになる?
ペンギン先生 ペンギン先生
Socket.IOは別の通信ライブラリで、WebSocket以外の通信方式も使うよ。再接続などの機能がある一方、独自の情報を加えるため、普通のWebSocketクライアントとそのまま互換ではない。権限管理もライブラリ任せで完成するものではないね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「WebSocket」って出てきたら「接続した両側からメッセージを送れる通信」と思えばだいたいOK!
📖 おまけ:英語の意味
「WebSocket」 = ウェブソケット
💬 Webで接続上のメッセージ通信を行うプロトコルの名前。WebSocketの通信方式と、ブラウザーで使うAPIを分けて考えるとよいね。

参考資料

← 用語集にもどる