WEB开发 之 HTML 5 服务器发送事件.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
![preview](https://dl-preview.csdnimg.cn/24984618/0001-eba48264e6980ab83cc018c589e4e6df_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
HTML5 服务器发送事件(Server-Sent Events,简称SSE)是一种让服务器向客户端实时推送数据的技术。在传统的Web开发中,客户端通常通过轮询或者长轮询的方式向服务器请求更新,而SSE则改变了这种模式,使得服务器能够主动将更新推送到已经打开的连接上,大大提高了实时性。 SSE的工作原理基于HTTP连接的持久化,即一旦客户端通过EventSource对象建立了与服务器的连接,这个连接就会保持打开状态,直到服务器或客户端关闭它。服务器可以通过发送事件流(Event Stream)来不断地向客户端发送数据,而无需等待客户端的请求。 创建一个EventSource对象是使用SSE的第一步。以下是一个简单的示例: ```javascript var source = new EventSource('demo_sse.php'); source.onmessage = function(event) { document.getElementById('result').innerHTML += event.data + '<br />'; }; ``` 这段代码创建了一个指向'demo_sse.php'的EventSource实例,并定义了当接收到消息时的处理函数。每当服务器发送事件,onmessage事件就会触发,数据会被添加到id为'result'的元素中。 为了确保浏览器支持SSE,我们需要进行兼容性检测。可以使用如下的条件语句来检查浏览器是否支持EventSource: ```javascript if (typeof(EventSource) !== 'undefined') { // 支持SSE,执行相关代码 } else { // 不支持SSE,提供备选方案 } ``` 在服务器端,我们需要创建一个能够发送事件流的脚本。对于PHP,可以设置合适的HTTP响应头,并输出格式化的事件流数据: ```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(); ?> ``` 这段PHP代码首先设置了`Content-Type`为`text/event-stream`,表示这是一个事件流,然后设置了`Cache-Control`为`no-cache`以防止缓存。接着,它会输出一个包含当前服务器时间的事件,以"data:"开头,并在末尾加上两个换行符,这是SSE数据格式的要求。 对于ASP环境,VBScript的实现类似: ```asp <% Response.ContentType = "text/event-stream" Response.Expires = -1 Response.Write("data: now()") Response.Flush() %> ``` 在服务器端代码中,我们可以看到服务器发送的数据总是以"data:"开始,这是SSE规范的一部分。此外,`flush()`函数的调用确保数据立即发送到客户端,而不是等到缓冲区填满。 EventSource对象还提供了其他事件处理器,例如`onopen`用于处理连接建立的事件,`onmessage`用于接收消息,以及`onerror`用于处理可能出现的错误。这些事件可以用来实现更复杂的逻辑,例如重新连接或错误处理。 总的来说,HTML5的服务器发送事件为实时Web应用提供了一种高效且简单的方法,让开发者可以构建出如社交网络更新、股票报价、博客文章发布等实时更新的应用,而无需依赖WebSocket等更复杂的技术。由于所有主流浏览器(除了Internet Explorer)都支持SSE,这使得它成为一种实用的跨平台解决方案。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 13
- 资源: 9万+
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- php在线客服源码免费开源
- dijkstra算法 - java实现
- 基于 C++实现的二叉树及其应用(实验报告+源码)
- Java项目-基于SSM+JSP的书店仓库管理系统的设计与实现(源码+数据库脚本+部署视频+代码讲解视频+全套软件)
- Delphi 12 控件之Delphi 11.3.2 中英文一键切换助手(含操作说明)- 适用 28.0.48361.3236
- ABB四轴机器人3HAC023932 PS IRB 660-en.pdf
- 基于 C++线性表及其实现 栈和队列及其应用课程实验(实验报告+源码)
- 软件设计师2020~2023真题
- Hive - A Warehousing Solution Over a Map-Reduce.pdf
- 基于 C++实现的超市商品库存信息管理系统课程设计(课程设计报告+源码)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)