通过html5 的EventSource来进行数据推送
发布时间:2020-05-31 00:11:14 所属栏目:PHP 来源:互联网
导读:以往我们要获取服务器的数据更新,一般通过ajax的定时请求,不过这样效率就低了。我们通过html5的EventSource可以很方便的获取服务器的数据更新,不过IE好像不支持。 例1如下: index
以往我们要获取服务器的数据更新,一般通过ajax的定时请求,不过这样效率就低了。我们通过html5的EventSource可以很方便的获取服务器的数据更新,不过IE好像不支持。 例1如下: index.html代码如下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="data"></div> </body> <script type="text/javascript"> //创建EventSource对象 var es = new EventSource("./data.php"); //接收到消息的回调函数 es.onmessage = function(e) { document.getElementById("data").innerHTML = e.data; }; </script> </html>data.php代码如下: <?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $num = mt_rand(1000,9999); //必须以data:开头,nn结尾 echo "data: {$num}nn"; //刷新缓存 ob_flush(); flush();我们把代码调整一下: <!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div id="data"> <ul id="data-list"> </ul> </div> </body> <script type="text/javascript"> //创建EventSource对象 var es = new EventSource("./data.php"); //接收到消息的回调函数 es.onmessage = function(e) { var addLi = document.createElement("li"); addLi.innerHTML = e.data; document.getElementById("data-list").appendChild(addLi); }; </script> </html> <?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $time = date('Y-m-d H:i:s'); echo "data: {$time}nn"; ob_flush(); flush();通过下面的图可以看到,浏览器(chrome)每隔3秒会自动请求data.php文件获取数据。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |