HTML Server-Sent Event
- 上一页 HTML5 Web Workers
- 下一页 HTML 实例
Ang Server-Sent event ay nagbibigay ng kapangyarihan sa web page na makakatanggap ng mga update mula sa server.
Server-Sent Event - One Way Messaging
Ang Server-Sent event ay tumutukoy sa awtomatikong pagkakatanggap ng update ng web page mula sa server.
Maaari rin itong gawin dati, sa tingin ng web page ay dapat magtanong kung mayroong magiging update. Sa pamamagitan ng Server-Sent event, ang mga update ay maaring dumating nang awtomatiko.
Halimbawa: mga update ng Facebook/Twitter, mga update ng halaga ng bahagi, bagong mga blog post, mga resulta ng laro, at iba pa.
Suporta ng Browser
Ang mga numero sa talahanayan ay nagtutukoy sa unang browser na ganap na sumusuporta sa server-sent event.
API | |||||
SSE | 6.0 | Hindi suportado | 6.0 | 5.0 | 11.5 |
Tanggapin ang notipikasyon ng Server-Sent Event
Ang EventSource object ay ginagamit upang tanggapin ang mga notipikasyon na ipinadala ng server:
Halimbawa
var source = new EventSource("demo_sse.php"); source.onmessage = function(event) { document.getElementById("result").innerHTML += event.data + "<br>"; };
Halimbawa ng paliwanag:
- Lumikha ng bagong EventSource object, at tukuyin ang URL ng pahina na magpadala ng update (sa halimbawa, "demo_sse.php").
- Kada pagtanggap ng isang update, nangyayari ang event na onmessage.
- Kapag nangyayari ang event na onmessage, ilalagay ang natanggap na data sa elemento na may id na "result".
Suriin ang Suporta ng Server-Sent Event
Sa TIY halimbawa, isinulat namin ang isang dagdag na kodigo upang suriin ang suporta ng browser sa pagpadala ng event ng server:
if(typeof(EventSource) !== "undefined") { // Oo! Suportado ang pagpadala ng event ng server! // Ilang kodigo..... } // Paumanhin! Hindi suportado ang pagpadala ng event ng server! }
Eskwelang kodigo sa server
Para maisa magsimula ang halimbawa, kailangan mo magpadala ng mga update sa server (halimbawa, PHP o 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"
- 规定不对页面进行缓存
- 输出要发送的日期(始终以 "data: " 开头)
- 向网页刷新输出数据
EventSource 对象
在上例中,我们使用 onmessage 事件来获取消息。不过还可以使用其他事件:
事件 | 描述 |
---|---|
onopen | 当通往服务器的连接被打开 |
onmessage | 当接收到消息 |
onerror | 当发生错误 |
- 上一页 HTML5 Web Workers
- 下一页 HTML 实例