AI活用の教科書
API開発ふつう3分で読了

SSE(サーバー送信イベント)

Server-Sent Eventsさーばーそうしんいべんと

ひとことで言うと

つないだままのHTTPで、サーバーから一方向に新着データを流し続ける仕組みです。

📖 もうちょい詳しく

何が新しいの?

ふつうのWeb通信は、画面の側が「ちょうだい」とお願いして、サーバーが一度だけ返して終わりです。新しい情報があるか何度も聞きに行くのは手間で、無駄も多くなります。SSE(サーバー送信イベント)は、いちど通信をつないだら、そのままサーバーから新着を流し続けてくれる仕組みです。

どうやって動いてるの?

画面の側は最初に一回だけ接続をひらき、その線をつないだままにします。サーバーは届けたい情報が出たびに、その線へ短いテキストを順番に書き込みます。中身は text/event-stream という決まった形のHTTP通信で、ふだんのWebと同じ土台の上を流れます。つまり特別な別系統ではなく、HTTPの応答を「終わらせずに少しずつ書き続ける」やり方です。

何ができるの?

株価やスポーツの速報、通知バッジの更新、AIの回答が一文字ずつ出てくる表示などに向いています。サーバーから人へ「お知らせを送りっぱなしにしたい」場面で力を発揮します。逆に、人からサーバーへひんぱんに送り返す用途には不向きです。

🌱 身近なたとえ

ラジオの実況中継で例えると分かりやすいです。あなたは周波数を合わせて(接続して)、あとは黙って聞いているだけです。新しい出来事が起きるたび、放送局(サーバー)が一方的に声を流してくれます。あなたから放送局へ話しかける線はありません。SSEもこの「聞く一方」の形に近いです。

✅ まず覚えるポイント

  • サーバーから画面への一方向だけの送信です
  • いちどつないだ接続を切らずに使い続けます
  • 中身はふつうのHTTPで、特別な別プロトコルではありません
  • 速報・通知・AIの逐次表示など「流しっぱなし」に向きます
  • 切れても自動で再接続してくれる仕組みが備わっています
  • ブラウザ側は EventSource という機能で簡単に受け取れます

🧭 よくある勘違い

WebSocketと同じもの?

似ていますが別物です。WebSocketは画面とサーバーが双方向にやり取りできる「電話」のような線です。SSEはサーバーから画面への一方向だけで、その代わり仕組みがシンプルで、ふつうのHTTPの上で動きます。送り返しがいらないなら、SSEのほうが手軽なことが多いです。

何度も聞きに行くポーリングと何が違うの?

ポーリングは画面の側が「もう更新ある?」と一定間隔で聞き直す方式です。SSEは聞き直さず、サーバー側が新着のたびに勝手に押し込みます。無駄な問い合わせが減り、新着が届くまでの遅れも小さくなりやすいです。

スマホのプッシュ通知のこと?

別の話です。SSEはWebページを開いている間だけ届く仕組みで、ページを閉じると止まります。アプリを閉じていても届くスマホの通知とは、土台も役割もちがいます。

🧩 関連して覚えると楽な言葉

  • WebSocket: 画面とサーバーが双方向にやり取りできる、つなぎっぱなしの通信
  • HTTP: Webページのやり取りに使う基本ルール。SSEもこの上で動きます
  • ポーリング: 一定間隔で「更新ある?」と聞きに行く、SSE以前のやり方
  • プッシュ通知: アプリを閉じていても届く、端末への一方向のお知らせ

🏁 ひとことでまとめ

接続を切らないHTTPを使って、サーバーが新着を一方向に流し続けるのがSSEです。送り返しのいらない「お知らせ専用」と覚えておくと迷いません。