好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

HTML 5 服务器发送事件

html5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新

Server-Sent 事件 - 单向消息传递

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

在 html5 之前也可以做到这一点,前提是网页不得不询问是否有可用的更新

通过 HTML5 服务器发送事件,更新能够 自动 到达,比如 Facebook/Twitter 更新、估价更新、新的博文、赛事结果等

浏览器 支持

所有主流浏览器均 支持 服务器发送事件,除了 Internet Explorer

接收 Server-Sent 事件 通知

EventSource?对象用于接收服务器发送事件 通知

var?source=new?EventSource("/dy/html/sse");
source.onmessage=function(event){
????document.getElementById("result").innerHTML+=event.data?+?"<br>";
};

HTML5 服务器发送事件过程解析

创建 一个 新的 EventSource 对象,然后设置发送更新的 页面 的 URL("/dy/sse")
每接收到一次更新,就会发生 onmessage 事件
当 onmessage 事件发生时,把已接收的数据推入 id 为 "result" 的元素中

检测 Server-Sent 事件 支持

在创建 EventSource 对象前,我们必须先检测服务器发送事件的浏览器 支持 情况

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

服务器端 代码 范例

为了让上面的范例可以运行,我们还需要能够发送数据更新的服务器 ( 比如 PHP 或 Python )

服务器端事件流的语法是非常简单的

把 "Content-Type" 报头设置为 "text/event-stream"

然后就可以开始发送事件流了

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:?"?&? Now ())
Response.Flush()
%>
把报头 "Content-Type" 设置为 "text/event-stream"
规定不对 页面 进行缓存
输出 发送日期(始终以 "data: " 开头) 4.向网页刷新 输出 数据

EventSource 对象

上面的范例中,我们使用 onmessage 事件来 获取 消息

同时,我们也还可以使用其它事件

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

HTML5 WebSocket ? ?HTML5 Web Workers

查看更多关于HTML 5 服务器发送事件的详细内容...

  阅读:49次

上一篇

下一篇

第1节:HTML5 教程    第2节:HTML5 浏览器支持    第3节:HTML5 新元素    第4节:HTML5 Video 视频    第5节:HTML 5 Video + DOM    第6节:HTML5 内联 SVG    第7节:HTML5 新的 Input 类型    第8节:HTML5 MathML 数学公式    第9节:HTML5 Geolocation 地理定位    第10节:HTML5 Canvas画布    第11节:HTML5 拖放 ( drag 和 drop )    第12节:HTML5 Audio 音频    第13节:HTML5 Web Workers    第14节:HTML5 表单元素    第15节:HTML5 表单属性    第16节:HTML5 语义元素    第17节:HTML5 Web 存储    第18节:HTML5 Web SQL 数据库    第19节:HTML5 应用程序缓存    第20节:HTML 5 服务器发送事件    第21节:HTML5 WebSocket    第22节:HTML5 历史记录API    第23节:HTML 5 代码规范    第24节:HTML5 Canvas 描边和填充    第25节:HTML5 Canvas 绘制矩形    第26节:HTML5 Canvas 清除画布    第27节:HTML5 Canvas 渐变    第28节:HTML5 Canvas 合成    第29节:HTML5 Canvas 绘制图像    第30节:HTML5 Canvas 绘制文本    第31节:HTML5 Canvas 阴影    第32节:HTML5 Canvas 路径    第33节:HTML5 Canvas 转换    第34节:HTML5 Canvas 状态    第35节:HTML5 Canvas toDataURL()    第36节:HTML5 Canvas 像素处理    第37节:HTML5 Canvas 制作动画