以往我们要获取服务器的数据更新,一般通过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:开头,\n\n结尾
echo "data: {$num}\n\n";
//刷新缓存
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}\n\n";
ob_flush();
flush();

通过下面的图可以看到,浏览器(chrome)每隔3秒会自动请求data.php文件获取数据。

通过html5 的EventSource来进行数据推送的更多相关文章

  1. HTML5支持服务器发送事件(Server-Sent Events)-单向消息传递数据推送(C#示例)

    传统的WEB应用程序通信时的简单时序图: 现在Web App中,大都有Ajax,是这样子: HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端.(通常叫数据 ...

  2. HTML5数据推送SSE原理及应用开发

    JavaScript表达行为,CSS表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...

  3. HTML5 SSE 数据推送应用开发

    javascript表达行为,css表达外观,注意HTML既表达结构(逻辑结构),又表达内容(数据本身)通常需要更新数据时,并不需要更新结构,正是这种不改变组织结构仅改变数据的诉求,推动了数据拉取和数 ...

  4. 理解HTML5数据推送应用开发问题

    一.数据推送 SSE是一种允许服务端向客户端推送新数据(通常称作数据推送)的HTML5技术.那么,究竟什么是数据推送?它与我们可能用过的其他技术有什么不同呢? 让我先来回答什么不是数据推送.数据推送有 ...

  5. HTML5中的SSE(服务器推送技术)

    本文原链接:https://cloud.tencent.com/developer/article/1194063 SSE技术详解:一种全新的HTML5服务器推送事件技术 前言 概述 基本介绍 与We ...

  6. 使用Node.js实现数据推送

    业务场景:后端更新数据推送到客户端(Java部分使用Tomcat服务器). 后端推送数据的解决方案有很多,比如轮询.Comet.WebSocket. 1. 轮询对于后端来说开发成本最低,就是按照传统的 ...

  7. javascript之数据推送

    我们使用ajax与后台服务进行交互,常常是通过触发事件来单次交互,但对于有些web应用来说,需要前台与后台保持长连接,前端不定时地接收后台推送的数据信息, 例如:股票行情分析.聊天室和网页在线游戏等. ...

  8. SSE技术详解:使用 HTTP 做服务端数据推送应用的技术

    SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议. 严格地说,HTTP 协议是没有办法做服务器推送的,但是当服务器向客户端声明接下来 ...

  9. kafka和websocket实时数据推送

    需求 ​ 已有Kafka服务,通过kafka服务数据(GPS)落地到本地磁盘(以文本文件存储).现要根据echarts实现一个实时车辆的地图. 分析 前端实时展现:使用websocket技术,实现服务 ...

随机推荐

  1. Python 编程规范梳理

    缘由 由于项目团队中新加入了几名攻城狮, 大家之前的背景各不相同,写出的代码也是“风格迥异”.正所谓:“无规则不成方圆”,因此需要对编程进行必要的规范. 整体的思路是:依照PEP8 Python 编码 ...

  2. js判断各种浏览器

    <script type="text/javascript"> if (navigator.appName.indexOf("Microsoft Intern ...

  3. more 可翻页查看(一页一页翻动)

    命令解释 我们查看数据的时候,使用前面提到的nl与cat.tac等等,都是将文件内容一次性输出到屏幕上,看起来不是很方便,那我们就可以使用这个命令,一页一页查看,前面的数据不至于看不到. 命令说明 [ ...

  4. java自定义事件机制分析

    import java.util.ArrayList; import java.util.EventListener; import java.util.EventObject; import jav ...

  5. ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)

    [root@master native]# mysql -uhive -pEnter password: ERROR 1045 (28000): Access denied for user 'hiv ...

  6. SpringBoot 返回json 字符串(jackson 及 fast json)

      一.jackson 1.Controller 类加注解@RestController 这个注解相当于@Controller 这个注解加 @ResponseBody 2.springBoot 默认使 ...

  7. EF中GroupBy扩展方法的简单使用

    public ActionResult ShopInfo() { ViewBag.ShopList = ShopService.GetEntities(x => x.IsDelete == fa ...

  8. Bogart gFunction.vb

    Module gFunction '其它不是常用的方法及函數 #Region " 將指定的數據格式轉換為英文格式" Public Function EnglishFormat(By ...

  9. oracle报ora-12519错误

    具体信息如下: ora-12519 tns:no appropriate service handler found the connection descriptor used by the cli ...

  10. zabbix监控系统日志

    监控日志必须让agent运行在主动模式 参考网站:https://www.cnblogs.com/dadonggg/p/8611054.html?from=singlemessage