HTML Server-Sent 事件

Server-Sent 事件允许网页从服务器获得更新。

Server-Sent 事件 - One Way Messaging

Server-Sent 事件指的是网页自动从服务器获得更新。

以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过 Server-Sent 事件,更新能够自动到达。

例如:Facebook/Twitter 更新、股价更新、新的博文、赛事结果,等等。

浏览器支持

表格中的数字指示完全支持 server-sent 事件的首个浏览器。

API
SSE 6.0 Huzungumza 6.0 5.0 11.5

Kumaliza matokeo ya kumshika kwenye kikompyeta cha kumshika matokeo ya kikompyeta

Kina cha EventSource kinahusisha kumaliza matokeo ya kumshika kwenye kikompyeta cha kumshika matokeo ya kikompyeta:

Mfano

var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
    document.getElementById("result").innerHTML += event.data + "<br>";
};

Jifunze kwa urahisi

Mifano ya maana:

  • Kumaliza kina kipya cha EventSource, kisha kumaliza URL ya wakati inayosaidia kumshika matokeo ya kikompyeta (kama hili ni "demo_sse.php")
  • Kila wakati inasababishwa kwa kumshika matokeo ya kikompyeta, hatua ya onmessage inasababishwa
  • Kila wakati inasababishwa kwa kumshika matokeo ya kikompyeta, hatua ya onmessage inasababishwa

Kumaliza mafanikio ya kumshika matokeo ya kikompyeta

Kwenye mifano ya TIY, tunasajiliwa kikodi cha kina kwa kumaliza mafanikio ya kumshika matokeo ya kikompyeta kwenye kifungu:

if(typeof(EventSource) !== "undefined") {
    // Ndio! Inahusishwa kwa hatua ya kumshika matokeo ya kikompyeta!
    // Mafanikio ya kikodi....
}
    // Tafadhali! Huzungumza kwa hatua ya kumshika matokeo ya kikompyeta!
}

Mfano wa kikodi kwenye kikompyeta

Kwa kumaliza mifano ya kuzungumza, inahitajika kwamba unaabidi inafikie kumshika data ya upateaji (kama PHP au ASP).

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

PHP 中的代码 (demo_sse.php):


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"
  • 规定不对页面进行缓存
  • 输出要发送的日期(始终以 "data: " 开头)
  • 向网页刷新输出数据

EventSource 对象

在上例中,我们使用 onmessage 事件来获取消息。不过还可以使用其他事件:

事件 描述
onopen 当通往服务器的连接被打开
onmessage 当接收到消息
onerror 当发生错误