Server Sent Events (SSE) の理解

ChatGPTを使っている場面を想像してみてください。質問をしたとき、文字が一つずつ表示されるのではなく、5秒待ってから回答が一度に表示されるとしたらどうでしょうか。

この遅延は遅く感じられ、もどかしさを感じさせます。

これを解決するために、開発者はストリーミングレスポンスを使用します。これにより、体験が高速に感じられるようになります。

Server Sent Events (SSE) がこれを可能にします。

SSEとは? SSEは、HTTPを介してサーバーからクライアントへデータをストリーミングするための標準規格です。これにより、サーバーがリアルタイムで更新情報をプッシュできるようになります。

仕組み: サーバーは小さなテキストブロックを送信します。これらのブロックは dataeventidretry といったフィールドを使用します。各ブロックは空行で区切られます。

例: data: {"name": "Portal Gun", "price": 999.99}

SSEの一般的な用途:

  • AIチャットのストリーミング
  • ライブ通知
  • リアルタイムログ
  • システムのオブザーバビリティ

SSEが登場する前、開発者は更新を取得するために主に2つの方法を使用していました。

  1. ショートポーリング クライアントがサーバーにデータを要求します。データが準備できていない場合、サーバーは待機メッセージを返します。クライアントは待機してから再度要求します。これが処理が完了するまで繰り返されます。

  2. ロングポーリング クライアントがサーバーにデータを要求します。サーバーは、データが準備できるかタイムアウトが発生するまで、リクエストを保持したままにします。クライアントはレスポンスを受け取った直後にリクエストを再開する必要があります。

イベントストリームは継続的なプロセスを扱います。これらのプロセスは特定の順序に従います。これには、PDFの作成のような単純なタスクから、銀行取引のような複雑なタスクまで含まれます。

サーバーはクライアントとの通信チャネルを開きます。プロセスが終了するまで、このチャネルを開いたままにします。

出典: https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd