HTML5之服务器发送事件

1 定义

Server-Sent 事件指的是网页自动获取来自服务器的更新

以前也可能做到这一点,前提是网页不得不询问(非自动)是否有可用的更新。通过服务器发送事件,更新能够自动到达。

例子:Facebook/Twitter 更新、估价更新、新的博文、赛事结果等。

2 浏览器支持

所有主流浏览器均支持 web worker,除了 Internet Explorer。

3.使用步骤

检测 Server-Sent 事件支持----接收 Server-Sent 事件通知


4.实例分析
在浏览器内部创建个时间自动更新,自动刷新
<span style="font-family:Arial;"><span style="font-size: 18px; line-height: 26px;"><!DOCTYPE html>//本地代码
<html>
<body>
<h1>获得服务器更新</h1>
<div id="result"></div>

<script>
if(typeof(EventSource)!=="undefined")//</span></span><h2 style="font-family: Arial; font-size: 18px; line-height: 26px; margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;"><span style="font-weight: normal;font-size:14px;">检测 Server-Sent 事件支持</span></h2><span style="font-family:Arial;"><span style="font-size: 18px; line-height: 26px;">
  {
  var source=new EventSource("/example/html5/demo_sse.php");//</span></span>建一个新的 EventSource 对象,然后规定发送更新的页面的 URL(本例中是 "demo_sse.php")<span style="font-family:Arial;"><span style="font-size: 18px; line-height: 26px;">
  source.onmessage=function(event)
    {
    document.getElementById("result").innerHTML+=event.data + "<br />";//</span></span><span style="font-family: Arial, Helvetica, sans-serif;">每接收到一次更新,就会发生 onmessage 事件,</span><span style="font-family: Verdana, Arial, 宋体; background-color: rgb(249, 249, 249);">当 onmessag         e 事件发生时,把已接收的数据推入 id 为 "result" 的元素中</span><span style="font-family:Arial;"><span style="font-size: 18px; line-height: 26px;">
    };
  }
else
  {
  document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events...";
  }
</script>

</body>
</html></span></span>//以下为服务器代码<span style="font-family:Arial;"><span style="font-size: 18px; line-height: 26px;">
</span></span>
<pre name="code" class="javascript"><?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();
?>


 
  

你可能感兴趣的:(html5,服务器发送事件)