WebSocket は、ブラウザとサーバーの間に持続的な接続を作り、その接続上で双方向にメッセージを送受信するための通信方式です。
チャット、通知、共同編集、監視ダッシュボードのように、サーバー側で起きた変化を画面へすぐ届けたい場面で使われます。
通常の HTTP は、クライアントがリクエストを送り、サーバーがレスポンスを返す形が基本です。
WebSocketでは、最初にHTTPのUpgradeで接続を始め、成立後は開いた接続の上でクライアントからもサーバーからもメッセージを送れるようになります。
まず押さえたいポイント
- 接続を開いたまま使う
- サーバー側からクライアントへ即時に送れる
- クライアントからサーバーへも同じ接続で送れる
- 実運用では
ws://より暗号化されたwss://を使うことが多い - 多くのブラウザ利用では TCP 接続の上で動く
リアルタイム通信 = 何でもWebSocket ではありません。
通常の画面表示、検索、登録、更新はHTTP APIで十分なことが多く、外部サービスからイベントを受けるなら Webhook の方が自然な場合もあります。
実務で見るポイント
WebSocketは、接続できたあとが大事です。
ブラウザのタブ復帰、スマートフォンの回線切り替え、Wi-Fi切断、サーバー再起動などで接続は普通に切れます。そのため、再接続、送信済みイベントの扱い、重複防止、最新状態への復帰を設計しておく必要があります。
また、リバースプロキシ やロードバランサーを前段に置く場合は、Upgradeヘッダー、タイムアウト、最大接続数、複数サーバー間の配信方法も確認します。
ログイン中のユーザーだけが受け取れる通知、部屋ごとのチャット、管理者だけが見られる監視情報では、接続時だけでなくメッセージ単位の権限確認も重要です。
WebSocketの採用判断やHTTPとの違いは、WebSocketとは?HTTPとの違いとリアルタイム通信で使う場面を整理 で詳しく整理しています。