HTML5 服务器发送事件(server-sent event)允许网页获得来自服务器的更新。
Server-Sent 事件 - 单向消息传递
Server-Sent 事件指的是网页自动获取来自服务器的更新。
以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过服务器发送事件,更新能够自动到达。
例子:Facebook/Twitter 更新、估价更新、新的博文、赛事结果等。
浏览器支持
所有主流浏览器均支持服务器发送事件,除了 Internet Explorer。
接收 Server-Sent 事件通知
EventSource 对象用于接收服务器发送事件通知:
实例
<!DOCTYPE html> <html> <body> <h1>获得服务器更新</h1> <div id="result"></div> <script> if(typeof(EventSource)!=="undefined") { var source=new EventSource("/example/html5/demo_sse.php"); source.onmessage=function(event) { document.getElementById("result").innerHTML+=event.data + "<br />"; }; } else { document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events..."; } </script> </body> </html>
例子解释:
- 创建一个新的 EventSource 对象,然后规定发送更新的页面的 URL(本例中是 "demo_sse.php")
- 每接收到一次更新,就会发生 onmessage 事件
- 当 onmessage 事件发生时,把已接收的数据推入 id 为 "result" 的元素中
检测 Server-Sent 事件支持
在上面的 TIY 实例中,我们编写了一段额外的代码来检测服务器发送事件的浏览器支持情况:
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 代码 (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: " 开头)
- 向网页刷新输出数据
EventSource 对象
在上面的例子中,我们使用 onmessage 事件来获取消息。不过还可以使用其他事件:
onopen | 当通往服务器的连接被打开 |
onmessage | 当接收到消息 |
onerror | 当错误发生 |
相关推荐
15.2.5 FileReader接口中的事件 288 15.3 拖放API 290 15.3.1 实现拖放的步骤 290 15.3.2 通过拖放显示欢迎信息 291 15.4 dataTransfer对象应用详解 293 15.4.1 使用effectAllowed...
网页模板——HTML5实现手机身份证表单上传提交特效源码是一个专为移动设备设计的交互式前端开发资源,它利用了HTML5的先进特性和功能,以提供一个流畅且直观的用户界面,使得用户能够方便地上传身份证图片,并进行...
通过以上这些示例,学习者可以逐步掌握如何利用HTML服务器控件构建动态的、交互式的Web应用程序。在实践中,开发者需要了解每个控件的属性、方法和事件,以便有效地实现所需的功能。同时,练习部分的"操作题"和"填空...
### MVC学习之——Professional ASP.NET MVC 3 #### 第1章 开始起步(Getting Started) 在这一章节中,作者介绍了ASP.NET MVC 3的基本概念和发展背景,并指导读者如何搭建开发环境,包括安装必要的软件和工具,如...
"Linux服务器安全策略全接触之二——Web服务器安全策略" 本文将详细介绍 Linux 服务器安全策略中的 Web 服务器安全策略,涵盖 Web 服务器安全隐患、Apache 服务器安全配置技巧和 Linux 中的安全策略。 Web 服务器...
【HTML5实训大作业——站酷网某工作室首页仿写】是一个基于Vue.js技术栈的前端项目,旨在通过模仿站酷网上某个工作室的首页,帮助学习者深化对HTML5、CSS3以及Vue.js的理解和应用。这个项目不仅包含了网页结构的设计...
总的来说,这个"ASP实例开发源码——创意几何色块html5网站源码 asp版 v2.0"是一个很好的学习资源,有助于提升开发者在ASP和HTML5方面的综合能力。通过实际操作,开发者可以深入理解这两种技术的融合,从而更好地...
本文将深入探讨"Web学习笔记——jsp基础语法"这一主题,重点关注JSP(JavaServer Pages)的基础知识。JSP是Java平台上的动态网页技术,它允许开发者将HTML、XML或其他标记语言与Java代码结合,以创建交互式的Web应用...
人工智能-项目实践-html-嵌入式web服务器BOA+CGI+HTML+MySQL项目实战——Linux 使用到的软件和技术 BOA服务器,CGI,CCGI,MySQL,SQLite。C,HTML,CSS,JS,SQL 具体功能讲解 1、运行BOA服务器 (来到BOA目录下...
此外,还可以使用JavaScript监听表单提交事件,防止未通过验证的表单数据被发送到服务器。例如: ```javascript document.getElementById("registrationForm").addEventListener("submit", function (event) { ...
在这个例子中,Ajax将用于向服务器发送请求,请求服务器返回当前的内存使用信息,而不是重新加载整个页面。 在项目中,可能包含以下关键组件: 1. JSP页面:作为用户界面,展示内存使用图表。页面中可能有...
【炫酷的登录页面——HTML】是一个以JavaScript为核心的前端项目,旨在创造一个视觉效果吸引人的登录界面。在本文中,我们将深入探讨HTML的基础知识,JavaScript的功能以及如何将两者结合以实现动态交互效果。 HTML...
1. 用户在浏览器中输入URL,请求发送到服务器。 2. Web服务器接收到请求后,解析URL,查找匹配的Servlet配置。 3. 根据web.xml中的配置,服务器加载并实例化Servlet类。 4. 如果在web.xml中设置了`load-on-startup`...
其中,Canvas作为HTML5的重要组成部分,为开发者提供了一种在网页上进行动态图形绘制的能力,非常适合用于实现各种视觉效果,包括我们今天要讨论的主题——“html5网页截图批注效果”。 Canvas是一个基于矢量图形的...
本资源“网页模板——基于HTML5 Bootstrap 3.x可预览的文件上传特效源码.zip”提供了一种高效的方法,用于创建包含文件上传功能的网页,并且在上传过程中具有实时预览效果。下面我们将详细探讨这个模板中涉及到的...
例如,当你在浏览器中输入网址时,你的计算机作为客户端发送HTTP请求,而Web服务器则返回HTML页面。这种模式是大多数互联网应用的基础,包括电子邮件、文件传输、在线购物等。 第三卷的重点是客户-服务器交互,这...
《深入理解计算机系统》这本书是计算机科学的经典之作,它涵盖了从硬件到软件的全面知识,其中涉及的一个小项目就是创建一个简单的Web服务器——tiny。在Windows环境下,这个项目被移植成了WinTiny,一个超小型的Web...
【JAVA遇见HTML——JSP篇】是一门适合初学者的课程,主要讲解了Java与HTML在Web开发中的结合,特别是JSP(Java Server Pages)的相关知识。本文将深入解析JSP的基本概念、语法以及核心对象,帮助理解如何利用JSP进行...
在本案例中,"ASP.NET源码——Jmail发送邮件系统源码.zip" 提供了一个利用ASP.NET技术实现的邮件发送系统。这个系统可能包含了处理用户交互、验证、邮件发送逻辑等功能,并且使用了Jmail组件来实现邮件服务。 Jmail...