2023年7月9日发(作者:)
浅谈html5之sse服务器发送事件EventSource介绍前⾔我前⾯⽂章讲过数据⼤屏,⾥⾯的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的博⽂、赛事结果等等,都需要数据时时更新。之前我们⼀般都是请求服务器,看看有没有可以更新的数据。html5提供了Server-SentEvents⽅法,通过服务器发送事件,更新能够⾃动到达。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_");age=function(event){ mentById("result").innerHTML+= + "
";};服务器端代码实例
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}nn";
flush();
>链接事件和报错事件都加上if(typeof(EventSource)!=="undefined"){ var source=new EventSource(""); =function() { ("Connection to server opened."); }; age=function(event) { mentById("result").innerHTML+= + "
"; }; r=function() { ("EventSource failed."); };}else{ mentById("result").innerHTML="抱歉,你的浏览器不⽀持 server-sent 事件...";}我们会发现,控制台打印如下:不停的进⼊链接、和错误,详情请点击那是因为php代码只是简单的echo,并没有连续输出,我们把上⾯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. ";nn"; ob_flush(); flush(); sleep(1); }>就不会出现不停错误了!IE浏览器兼容解决⽅案我们知道,IE浏览器并不⽀持EventSource,有如下解决⽅案:引⼊ install event-source-polyfill就可以了。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688906539a182249.html
评论列表(0条)