SSE数据推送方案介绍
写于 2017-08-26 | 分类于 编程
传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。今天我们来了解一些HTML5中的一种数据推送方法
SSE原理
- WebSocket 的一种轻量代替方案,使用 HTTP 协议
- HTTP 协议是没有办法做服务器推送的,但是当服务器向客户端声明接下来要发送流信息时,客户端就会保持连接打开
SSE用途
- 更新频繁、低延迟的场景,统计数据实时情况的应用
- 邮箱服务的新邮件提醒,微博的新消息推送、管理后台的一些操作实时同步等
SSE相对于WebSocket的优势
- 实现一个完整的服务仅需要少量的代码;
- 可以在现有的服务中使用,不需要启动一个新的服务;
- 可以用任何一种服务端语言中使用;
- 基于 HTTP/HTTPS 协议,可以直接运行于现有的代理服务器和认证技术。
简单的实例
- 客户端代码 ```html
Initializing...
```javascript
var es = new EventSource("http://127.0.0.1:1234");
var es = new EventSource("01.basic_sse.php");
es.addEventListener("message", function (e) {
document.getElementById('x').innerHTML += "\n" + e.data;
}, false);
- 服务端代码 ```php // php后端 header(‘Content-Type: text/event-stream’); header(‘Cache-Control: no-cache’);
$time = date(‘r’); // data:前缀和\n\n后缀是SSE协议规范所要求的 echo “data: The server time is: {$time}\n\n”; flush(); ```
向下兼容
- 请参考实例:数据推送应用开发实例