最新のWeb開発のチュートリアル

HTML5サーバー、送信されたイベント


サーバーに送信されたイベントは、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 エラーが発生した場合