Skip to content
Latchkey

WebSocket vs SSE: どちらのリアルタイムトランスポートを選ぶ?

WebSocketは全二重の双方向チャネルであり、Server-Sent EventsはHTTP上でサーバーからブラウザへ更新を流すシンプルな一方向ストリームです。

WebSocketは接続をupgradeし、クライアントとサーバーがいつでもメッセージを送信できるようにするため、チャット、ゲーム、コラボレーションアプリに理想的です。SSEは軽量なHTTPベースのストリームで、サーバーがクライアントにイベントをpushし、自動再接続と扱いやすいproxy/cacheの挙動を備え、通知やライブフィードに理想的です。WebSocketは双方向のやり取りを、SSEはシンプルな一方向のpushを重視します。

WebSocketSSE
方向双方向サーバーからクライアントへ
プロトコルws://(upgrade)HTTP
再接続手動自動
ブラウザAPIWebSocketEventSource
最適な用途チャット、ゲーム、コラボ通知、ライブフィード

ユースケースとインフラ

クライアントが継続的にデータを送信する必要がある場合(チャット、マルチプレイヤー、ライブ編集)はWebSocketを選びます。サーバーが更新をpushするだけでよく(ダッシュボード、通知、進捗)、よりシンプルなインフラ、ネイティブな再接続、HTTPに優しいproxyが欲しい場合はSSEを選びます。SSEはテキストに限定され、HTTP/1.1では接続数の上限があります。

CIとdeployにおいて

WebSocketはupgradeとsticky sessionのために設定されたproxyとload balancerを必要とします。SSEはより少ないチューニングで標準的なHTTPインフラを通して動作します。CIでリアルタイムのendpointをsmoke-testしてください。どちらもマネージドrunnerからデプロイでき、より高速なrunnerはbuildと統合テストを短縮します。

結論

チャットやマルチプレイヤーのような双方向で低レイテンシのやり取りには、WebSocketです。最もシンプルなインフラで通知やライブダッシュボードのような一方向のサーバープッシュには、SSEです。サーバーからクライアントへpushするだけなら、SSEはしばしばより軽量でproxyに優しい選択肢です。

関連ガイド