English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

HTML5 サーバー送信イベント

HTML5 サーバー送信イベント(server-sent event)を使用すると、ウェブページがサーバーからの最新データを取得し、ウェブページをリフレッシュしなくても最新データを動的に取得できます。

サーバー-Sent イベント - 一方向のメッセージ送信

サーバー-Sent イベントとは、ウェブページが自動的にサーバーからのデータ更新を取得する方法です。

従来のサーバー側の最新データ取得方法は、リフレッシュやタイマーをトリガーして最新データを取得する方法でした。しかし、現在ではサーバー送信Server-Sentイベントを使用すると、最新データを自動的に取得できます。

例:Facebook/Twitterの更新、株価情報、微博、スポーツ試合結果、動的メッセージ、コメントなど。

ブラウザのサポート

すべての主要ブラウザがサーバー送信イベントをサポートしていますが、Internet Explorerを除いています。

サーバー-Sent イベント通知

EventSource オブジェクトはサーバーから送信されるイベント通知を受信するために使用されます:

!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>基础教程网(oldtoolbag.com)</title>


获取服务端最新数据

测试看看 ‹/›

示例解析:

检测 Server-Sent 事件支持

以下示例,我们编写了一段额外的代码来检测服务器发送事件的浏览器支持情况:

if(typeof(EventSource)!=="undefined")
{
    // 浏览器支持 Server-Sent
    // 一些代码.....
}
else
{
    // 浏览器不支持 Server-Sent..
}

服务器端代码示例

为了让上面的示例可以运行,您还需要能够发送数据更新的服务器(比如 PHP 和 ASP)。

服务器端事件流的语法是非常简单的。把 "Content-Type" 报头设置为 "text/event-stream"。现在,您可以开始发送事件流了。

在线示例

ASP コード (VB) (demo_sse.asp):

<%
Response.ContentType="text/event-stream"
Response.Expires=-1
Response.Write("data: The server current time" & now())
Response.Flush()
%>

コード解説:

  • ヘッダー "Content"-Type" は "text" に設定/event-stream"

  • ページのキャッシュを設定しない

  • 送信日付を出力(常に "data: " で始まる)

  • ウェブページにデータを更新して表示

EventSource オブジェクト

上記の例では、onmessage イベントを使用してメッセージを取得します。他のイベントも使用できます:

イベント説明
onopenサーバーへの接続が開かれた場合
onmessageメッセージを受信した場合
onerrorエラーが発生した場合