Server-Sent イベントを使用すると、Web ページがサーバーから更新を取得できるようになります。
Server-Sent イベントは、Web ページがサーバーから更新を自動的に取得することを意味します。
ページでアップデートが利用可能かどうかを尋ねる必要がある場合は、以前もこれを行うことは可能でした。 更新は、Server-Sent イベントを通じて自動的に到着します。
例: Facebook/Twitter の更新、株価の更新、新しいブログ投稿、スポーツの結果など。
表内の数字は、server-sent イベントを完全にサポートした最初のブラウザを示します。
| API | |||||
| SSE | 6.0 | サポートしません | 6.0 | 5.0 | 11.5 |
EventSource オブジェクトは、サーバーから送信されたイベント通知を受信するために使用されます。
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
TIY の例では、サーバー送信イベントに対するブラウザのサポートを検出するために追加のコードを作成しました。
if(typeof(EventSource) !== "undefined") {
// はい! サーバー送信イベントのサポート!
// 何らかのコード....
} else {
// サーバー送信イベントはサポートされていません。
}
上記の例が機能するには、データ更新を送信できるサーバー (PHP や ASP など) が必要です。
サーバー側のイベント ストリームの構文は非常に単純です。 「Content-Type」ヘッダーを「text/event-stream」に設定してください。 これで、イベント ストリームの送信を開始できるようになりました。
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
上記の例では、onmessage イベントを使用してメッセージを取得します。 ただし、他のイベントも使用できます。
| イベント | 説明 |
|---|---|
| onopen | サーバーへの接続が開かれたとき |
| onmessage | メッセージを受信したとき |
| onerror | エラーが発生した場合 |