WebSocket(ウェブソケット)はブラウザとサーバー間で持続的な双方向通信を実現するプロトコル。HTTPとの違い・Socket.ioとの関係・SSEとの使い分け・チャットやオンラインゲームへの活用を解説。
WebSocket(ウェブソケット)とは、ブラウザとサーバー間で1回のハンドシェイクを経て持続的な接続を確立し、双方向にリアルタイムでデータを送受信できる通信プロトコルです。RFC 6455として標準化されており、すべての主要ブラウザでサポートされています。チャットアプリ・リアルタイム通知・株価更新・オンラインゲームなど、サーバーからのデータプッシュが必要な用途に欠かせない技術です。
HTTPはリクエスト・レスポンス型の通信でクライアントからの問い合わせが必要ですが、WebSocketは一度接続すればサーバーから随時データをプッシュできます。
| 項目 | HTTP | WebSocket |
|---|---|---|
| 通信方向 | 一方向(クライアント→サーバー) | 双方向(クライアント⇔サーバー) |
| 接続方式 | 毎回リクエストごとに接続 | 一度確立した接続を維持 |
| サーバーからのプッシュ | 不可(ポーリングが必要) | 可能(即時プッシュ送信) |
| ヘッダーオーバーヘッド | 毎回大きなHTTPヘッダーが付く | 接続確立後は軽量フレームのみ |
| プロトコル | http:// または https:// | ws:// または wss://(セキュア) |
| 主な用途 | Webページ取得・REST API | チャット・ゲーム・リアルタイム更新 |
メッセージの即時送受信。既読通知・タイピング中の表示にも活用。
SNSのいいね・コメント通知をサーバーから即座にプッシュ。
プレイヤーの操作・位置情報を低遅延でリアルタイム同期。
市場データのミリ秒単位のリアルタイム更新に対応。
リアルタイム通信の手段としてWebSocketと並んでServer-Sent Events(SSE)があります。用途によって使い分けましょう。
| 項目 | WebSocket | Server-Sent Events (SSE) |
|---|---|---|
| 通信方向 | 双方向(クライアント⇔サーバー) | 一方向(サーバー→クライアントのみ) |
| プロトコル | ws:// / wss://(独自プロトコル) | 通常のHTTP/HTTPS |
| 自動再接続 | 実装が必要 | ブラウザが自動で再接続 |
| 実装の複雑さ | やや複雑 | シンプル |
| 主な用途 | チャット・ゲーム・コラボレーション | LLMのストリーミング・ニュースフィード |
ChatGPTのような LLMのストリーミングレスポンス(文字が逐次表示される機能)にはSSEが使われるケースが多いです。サーバー→クライアントへの一方向プッシュで十分な場合はSSEの方がシンプルに実装できます。
はい、WebSocketにはセキュアな接続として wss://(WebSocket Secure)があり、HTTPS環境での使用が推奨されます。wss:// はTLS/SSLで暗号化されており、本番環境では必ずwss://を使用してください。ws:// は平文のため開発環境のみでの使用にとどめましょう。
WebSocketはブラウザとサーバー間の通信プロトコル(標準仕様)です。Socket.ioはWebSocketをラップしたJavaScriptライブラリで、接続できない環境ではlong pollingへの自動フォールバック、名前空間やルームによるグループ管理、再接続の自動処理などの追加機能を提供します。
サーバーからクライアントへのリアルタイムプッシュが必要な場面、またはクライアントとサーバーの双方向で頻繁にデータをやり取りする場面に適しています。チャット、オンラインゲーム、株価リアルタイム表示、コラボレーションツール(共同編集)などが代表的です。一方、単純なページ取得やAPIリクエストには通常のHTTPで十分です。
ITエンジニア向け転職サービス2強を並行利用するのが最も効果的です。
※どちらも完全無料。登録だけで市場価値を確認できます。