サーバーに送信されたイベントは、Webページがサーバーからアップデートを取得することができます。
サーバー送信されたイベント - ワン・ウェイ・メッセージング
Webページが自動的にサーバーから更新を取得するときに、サーバー送信されるイベントです。
これは、以前にも可能であったが、いずれかのアップデートが入手できた場合は、Webページには、依頼する必要があります。 サーバー送信されるイベントでは、アップデートは自動的に来ます。
例: Facebook/Twitterアップデート、株価の更新、ニュースフィード、スポーツの結果など
ブラウザのサポート
表中の数字は、完全にサーバー送信されるイベントをサポートする最初のブラウザのバージョンを指定します。
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>";
};
»それを自分で試してみてください 例を説明します:
- 新しい作成EventSourceオブジェクトを、およびアップデートを送信するページのURLを指定します(in this example "demo_sse.php")
- 更新が受信されるたびに、 onmessageイベントが発生します
- 場合onmessageイベントが発生すると素子に受信したデータを置くid="result"
サーバー・送信されたイベントのサポートを確認します
でtryit上記の例のコードのいくつかの余分な行がサーバー送信されるイベントのブラウザのサポートを確認することがありました。
if(typeof(EventSource) !== "undefined") {
// Yes! Server-sent events support!
// Some code.....
} else {
// Sorry! No server-sent events support..
}
サーバーサイドのコード例
上記の例は、動作させるために、あなたは(PHPやASPのような)データ更新を送信できるサーバーが必要です。
サーバー側のイベントストリームの構文は単純です。 設定し"Content-Type"に、ヘッダー"text/event-stream" 。 今、あなたは、イベントストリームの送信を開始することができます。
PHPのコード(demo_sse.php)
<?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();
?>
内のコードASP (VB) (demo_sse.asp)
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
コードは説明しました:
- 設定し"Content-Type"に、ヘッダー"text/event-stream"
- ページをキャッシュしないように指定
- データを送信するための出力( Always start with "data: ")
- Webページに戻って、出力データをフラッシュ
EventSourceオブジェクト
我々上記の例では、メッセージを取得するためのonMessage、イベントを使用していました。 しかし、他のイベントも用意されています。
イベント | 説明 |
---|---|
onopen | サーバーへの接続が開かれると |
onmessage | メッセージを受信した場合 |
onerror | エラーが発生した場合 |