16章Server-Sent Events

Server-Sent Events(SSE)は、サーバからクライアントへの効率的なテキストベースのデータストリーミングを実現します。例えば、サーバが生成したデータのリアルタイム通知やアップデートなどに利用できます。効率的なストリーミングを行うため、SSEは2つの要素を導入しました。1つ目は、サーバからのプッシュ通知をクライアントがDOMイベントとして取得するための、ブラウザのEventSourceインターフェイスです。そして2つ目は、それぞれのアップデートを配信する際に使用する「イベントストリーム(event stream)」データフォーマットです。

EventSource APIとイベントストリームデータフォーマットの組み合わせは、SSEをブラウザでリアルタイムデータを扱うための効率的かつ不可欠なツールにします。

  • 単一の持続的接続における低レイテンシ配信
  • 効率的なブラウザのメッセージ解析と、際限なく肥大化しないバッファ
  • 最後に送信されたメッセージの自動追跡と自動再接続
  • DOMイベントとしてのクライアントメッセージ通知

SSEは内部的には、効率的かつクロスブラウザのXHRストリーミングの実装です。実際のメッセージ配信は単一の持続的HTTP接続上で行われます。しかし、自分でデータ処理を行う必要があるXHRストリーミングとは異なり、SSEではブラウザが接続管理とメッセージ解析を行うため、アプリケーションはビジネスロジックに集中できます。要するに、SSEはリアルタイムデータの取り扱いをシンプルで効率的にしてくれるということです。それでは、内部構造をみてみましょう。

16.1 EventSource API

EventSourceインターフェイスは、接続確立やメッセージ解析などの低レベル作業をシンプルなブラウザAPIに抽象化したものです。SSEを開始するためには、SSEイベントストリームリソースのURLを指定して、適切なJavaScriptイベントリスナをオブジェクトに登録するだけです。 ...

Get ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.