您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

H5的之sse服务器发送事件EventSource详解

2025/8/12 8:16:39发布37次查看
这次给大家带来h5的之sse服务器发送事件eventsource详解,sse服务器发送事件eventsource的注意事项有哪些,下面就是实战案例,一起来看一下。
前言
我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,facebook/twitter 更新、估价更新、新的博文、赛事结果等等,都需要数据时时更新。之前我们一般都是请求服务器,看看有没有可以更新的数据。html5提供了server-sent events方法,通过服务器发送事件,更新能够自动到达。
server-sent events使用
server-sent events使用很简单,通过eventsource 对象来接受服务器端消息。有如下事件:
onopen 当通往服务器的连接被打开
onmessage 当接收到消息
onerror 当发生错误
检测 server-sent 事件支持
if(typeof(eventsource)!==undefined) {   // 浏览器支持 server-sent   // 一些代码..... } else { // 浏览器不支持 server-sent.. }
接收 server-sent 事件通知
var source=new eventsource(haorooms_sse.php); source.onmessage=function(event) {     document.getelementbyid(result).innerhtml+=event.data + <br>; };
服务器端代码实例
<?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(); ?>
链接事件和报错事件都加上
if(typeof(eventsource)!==undefined) {     var source=new eventsource(server.php);     source.onopen=function()     {          console.log(connection to server opened.);     };     source.onmessage=function(event)     {         document.getelementbyid(result).innerhtml+=event.data + <br>;     };     source.onerror=function()     {         console.log(eventsource failed.);     }; } else {     document.getelementbyid(result).innerhtml=抱歉,你的浏览器不支持 server-sent 事件...; }
我们会发现,控制台打印如下:
不停的进入链接、和错误,详情请点击
那是因为php代码只是简单的echo,并没有连续输出,我们把上面php代码做如下改进
<?php header('content-type: text/event-stream'); header('cache-control: no-cache'); $time = date('r'); $i = 0; $c = $i + 100; while (++$i < $c) { echo "id: " . $i . "\n"; echo "data: " . $time. ";\n\n"; ob_flush(); flush(); sleep(1); } ?>
就不会出现不停错误了!
ie浏览器兼容解决方案
我们知道,ie浏览器并不支持eventsource,有如下解决方案:
引入
eventsource.min.js
就可以完美解决。可以查看其github地址:https://github.com/yaffle/eventsource 结合nodejs使用也很方便,直接
npm install event-source-polyfill
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
h5实现可缩放的时钟动画
前缀data-属性和dataset的使用方法
以上就是h5的之sse服务器发送事件eventsource详解的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product