HTML5 Server-Sent Events 服务器发送事件

通过服务器的发送事件,自动更新网页的内容

使用:

  1. 验证支持情况
if(typeof(EventSource) !== "undefined") {
    //支持
} else {
    //不支持...
}
  1. 使用Server-Sent Events就是通过 EventSource 对象来接受服务器端消息,有一下几个事件:
1. onopen ----打开服务器连接时
2. onmessage---当收到消息时
3. onerror ---当发生错误时
  1. 案例

网页端代码

if (typeof(EventSource) !== 'underfined') {
    // 实例化 对象,接收一个url
    let source = new EventSource('data.php');
    // 成功与服务器发生连接时触发
    source.onopen = function (e) {
        console.log(e);
    }
    //出现错误时触发
    source.onerror = function (e) {
        console.log(e);
    }
    // 收到服务器发生的事件时候触发
    source.onmessage = function (event) {
        console.log(event);
    }
    // 自定义事件
    source.addEventListener('myEvent', function (e) {
        console.log('event:' + e.data);
    })

} else {
    console.log('该浏览器不支持');
}

服务器端代码PHP示例

header("Content-Type:text/event-stream");
header("Cache-Control: no-cache");

$time = date('Y-m-d H:i:s');
echo "retry:1000\ndata: {$time} \n\n";

echo "id:5\n".
"event: myEvent\n".
"data: hello world\n\n";

flush();

爬不完的坑:

  1. 设置内容类型:Content-Type:text/event-stream
  2. 输出要发送的数据 格式 "data:"
  3. 输出的数据要以 格式" :\n\n" 结束
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • SSE概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。这要...
    wavesnow阅读 9,308评论 3 5
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 14,023评论 6 13
  • 在一切道德品质之中,善良的本性在世界上是最需要的。——罗素 1 朋友的亲戚是一名列车员,他给我讲了一个...
    樊江艳阅读 3,841评论 8 10
  • 花开半夏 回忆是个什么?是选择性的储存器,是夸张的的表达手法,是年老失修的计算机。可我的记忆算什么,趁着发呆失神的...
    c8c30dbd76d8阅读 1,882评论 0 1

友情链接更多精彩内容