Server-Sent Events(サーバーセントイベンツ)
HTTP単方向Push配信(SSE・EventSource API)。text/event-stream・MIME・data:/event:/id:/retry:構造、LLMストリーミング(OpenAI/Anthropic API)・Next.js Server Actions streaming・Supabase Postgres Changes・Vercel AI SDK・Hono Stream対応が2026年代表、WebSocket比軽量。
概要
Server‑Sent Events(SSE)は、HTTPを用いてサーバーがクライアントへ一方向にデータをプッシュする仕組みです。
クライアントは EventSource API を介して text/event-stream MIME タイプのストリームを受信し、
data:, event:, id:, retry: などのフィールドで構成されるメッセージを逐次処理します。
WebSocket と比べてヘッダーが軽量で、TCP の確立・終了が 1 回だけで済むため、
低レイテンシで 10 GbE 以上の帯域を持つサーバー環境でも安定した配信が可能です。
2025年に登場した Vercel AI SDK では、LLM のストリーミング応答を SSE で受け取るサンプルが公開され、
2026年には Hono Stream が正式リリースされ、SSE のサーバーサイド実装がさらに簡素化されました。
主な特徴・仕組み
- 単方向通信:サーバーからクライアントへのみデータが流れ、クライアントは送信できない。
- 自動再接続:
retry:フィールドで再接続間隔を指定でき、ネットワーク障害時に自動で再接続。 - テキストベース:バイナリデータは Base64 でエンコードして送信するため、HTTP の既存インフラで利用可能。
- 軽量ヘッダー:WebSocket のようなフレームヘッダーが不要で、1 KB 以内のオーバーヘッド。
- ブラウザネイティブ:主要ブラウザが標準でサポートし、追加ライブラリ不要。
- ストリーミング API:Next.js Server Actions で
response.bodyをストリーム化し、SSE と組み合わせるケースが増加。 - データベース変更通知:Supabase の Postgres 変更トリガーを SSE でリアルタイムにクライアントへ送信。
- LLM 連携:OpenAI/Anthropic の API で生成されるチャットレスポンスを
data:フィールドで逐次送信。 - 低消費電力:サーバー側は 3.5 W 以内で動作し、データセンターの電力コストを抑制。
- スケーラビリティ:10 GbE のネットワークを備えた Intel Xeon W‑3303 で 1 TB の NVMe ストレージを搭載し、
1 万クライアントに同時配信を実現。
スペック/製品比較表
| 製品 | CPU | メモリ | ストレージ | ネットワーク | 主要用途 |
|---|---|---|---|---|---|
| RTX 5090 | 5.7 GHz | 24 GB GDDR7 | 1.5 TB NVMe | 10 GbE | 高負荷 AI 推論 |
| Ryzen 9 9950X3D | 4.5 GHz | 32 GB DDR5‑6000 | 2 TB NVMe | 10 GbE | データベースサーバ |
| Core Ultra 9 285K | 3.8 GHz | 16 GB DDR5‑6000 | 512 GB NVMe | 10 GbE | Web アプリサーバ |
| DDR5‑6000 | – | 16 GB | – | – | 高速キャッシュ |
| PCIe 5.0 x16 | – | – | – | – | GPU 接続 |
具体例・対応製品
- Vercel AI SDK:2025年にリリースされた SDK で、SSE を利用したチャットボットのストリーミングが可能。
- Hono Stream:2026年に正式リリースされ、SSE を簡易 API で実装できる。
- Supabase Postgres Changes:データベースの変更をリアルタイムで
EventSourceに送信。 - OpenAI / Anthropic API:LLM の生成結果を
data:フィールドで逐次送信し、ブラウザに即時表示。 - Next.js Server Actions:サーバー側で生成したストリームを
response.bodyとしてクライアントへ送信。
自作PCでの選び方・注意点
- CPU:SSE は CPU への負荷が低いが、同時接続数が多い場合は 4 GHz 以上のクロックが望ましい。
- メモリ:256 MB 以上のキャッシュを備えた CPU を選択し、同時接続数に応じて 8 GB 以上の DDR5 を搭載。
- ストレージ:1 TB NVMe 以上で、データの書き込みレイテンシを抑える。
- ネットワーク:10 GbE 以上の NIC を採用し、帯域を確保。
- 電源:3.5 W 以内で動作するサーバー構成を目指し、80 % 程度の効率を持つ 650 W 以上の PSU を選択。
- OS:Linux の
systemdでEventSourceを扱う場合、systemd‑socket‑activatedを利用するとスケールが向上。 - ファイアウォール:ポート 80/443 を開放し、
text/event-streamの MIME タイプを許可。 - 監視:Prometheus で
http_requests_totalを監視し、SSE の接続数を可視化。 - バックアップ:データベースは 1 TB の SSD を RAID 1 で構成し、障害時の復旧を速める。
- 冷却:高負荷時に 70 °C を超えないよう、液体冷却を検討。
関連用語との違い
- WebSocket:双方向通信でフレームヘッダーが必要。SSE は単方向でヘッダーが軽量。
- HTTP/2 Server Push:リクエストに対して複数のレスポンスを送るが、SSE はストリームを継続的に送信。
- MQTT:IoT 専用プロトコルで軽量だが、SSE は標準 HTTP で実装可能。
- GraphQL Subscriptions:サーバー側で WebSocket を利用するケースが多い。SSE は単純なテキストストリームで実装。
よくある質問
Q1. SSE は 2026年のサーバーに対応していますか?
A1. はい。Hono Stream で 2026年にリリースされたサーバーは、SSE をネイティブにサポートしています。
Q2. SSE の再接続は自動で行われますか?
A2. retry: フィールドで再接続間隔を指定でき、ブラウザが自動で再接続します。
Q3. SSE でバイナリデータを送ることは可能ですか?
A3. はい。Base64 でエンコードして data: フィールドに入れることで送信できます。
まとめ
Server‑Sent Events は、HTTP の既存インフラを活用しつつ、低レイテンシで高スケールの単方向通信を実現する技術です。
2025年以降の AI SDK や 2026年に登場した Hono Stream など、最新の開発環境で容易に導入できる点が魅力。
自作PCで構築する際は、CPU、メモリ、ストレージ、ネットワークをバランス良く選択し、SSE の軽量特性を最大限に活かす設計が重要です。
次世代のリアルタイム Web アプリケーションにおいて、SSE は WebSocket と並ぶ選択肢として確固たる位置を占めています。