×
HTML 教程HTML 简介HTML 编辑器HTML 基础HTML 元素HTML 属性HTML 标题HTML 段落HTML 文本格式化HTML 链接HTML 头部HTML CSSHTML 图像HTML 表格HTML 列表HTML 区块HTML 布局HTML 表单HTML 框架HTML 颜色HTML 颜色名HTML 颜色值HTML 脚本HTML 字符实体HTML URLHTML 速查列表HTML 总结XHTML 简介

HTML5 简介

HTML5 简介HTML5 浏览器支持HTML5 新元素HTML5 CanvasHTML5 内联 SVGHTML5 拖放HTML5 地理定位HTML5 Video(视频)HTML5 Audio(音频)HTML5 Input 类型HTML5 表单元素HTML5 表单属性HTML5 语义元素HTML5 Web 存储HTML5 应用程序缓存HTML5 Web WorkersHTML5 SSEHTML5 WebSocketHTML(5) 代码规范

HTML 媒体

HTML 媒体(Media)HTML 对象HTML 音频(Audio)HTML视频(Videos)播放HTML 实例

HTML 参考手册

HTML 标签列表(字母排序) HTML 标签列表(功能排序) HTML 属性 HTML 事件 HTML 画布 HTML 音频/视频 HTML 有效DOCTYPES HTML 颜色名 HTML 拾色器 HTML 字符集 HTML ASCII HTML ISO-8859-1 HTML 符号 HTML URL 编码 HTML 语言代码 HTTP 消息 HTTP 方法 键盘快捷键 

HTML5 SSE


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


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

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

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

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


浏览器支持

Internet ExplorerFirefoxOperaGoogle ChromeSafari

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


接收 Server-Sent 事件通知

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

实例

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

尝试一下 »

实例解析:

  • 创建一个新的 EventSource 对象,然后规定发送更新的页面的 URL(本例中是 "demo_sse.php")
  • 每接收到一次更新,就会发生 onmessage 事件
  • 当 onmessage 事件发生时,把已接收的数据推入 id 为 "result" 的元素中

检测 Server-Sent 事件支持

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

if(typeof(EventSource)!=="undefined")
{
// Yes! Server-sent events support!
// Some code.....
}
else
{
// Sorry! No server-sent events support..
}


服务器端代码实例

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

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

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "data: The server time is: {$time}nn";
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: " 开头)
  • 向网页刷新输出数据

EventSource 对象

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

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

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)