概要
サーバーからクライアントにpush送信するイベント。
本来のクライアントがリクエストしてレスポンスを貰うという、
クライアントで発火したイベントタイミングでの通信とは違い、
サーバー側のタイミングで通信を行う(イメージ)。
流れ
- クライアントがリクエストURLを渡して
EventSource
オブジェクトを生成する - サーバー側は上記リクエストを検知しpush配信を開始する
- クライアントはpush配信を監視し、サーバーからのメッセージを待ち受ける
実装
サーバー側
MIME タイプ text/event-stream
で応答するように実装する。
(この記事では詳しくは説明しない)
クライアント側
EventSourceオブジェクト生成
これによりサーバーにpush配信を開始させるリクエストを送る。
const evtSource = new EventSource(requestUrl);
サーバーからのメッセージ受け取り
push配信を受け取ったタイミングでonmessage
に代入した関数が発火する。
クライアント側は受け取ったメッセージを利用して処理を行うことができる。
evtSource.onmessage = function(event: MessageEvent<string>) {
const message: string = event.message
// 受信したメッセージを用いてクライアント側を更新
}
参考
https://developer.mozilla.org/ja/docs/Web/API/Server-sent_events
https://developer.mozilla.org/ja/docs/Web/API/Server-sent_events/Using_server-sent_events