热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

H5的之sse服务器发送事件EventSource详解-

这次给大家带来H5的之sse服务器发送事件EventSource详解,sse服务器发送事件EventSource的注意事项有哪些,下面就是实战案例,一起来看一下。
这次给大家带来H5的之sse服务器发送事件EventSource详解,sse服务器发送事件EventSource的注意事项有哪些,下面就是实战案例,一起来看一下。

前言

我前面文章讲过数据大屏,里面的数据时时更新。还有时时更新的股票数据,Facebook/Twitter 更新、估价更新、新的博文、赛事结果等等,都需要数据时时更新。之前我们一般都是请求服务器,看看有没有可以更新的数据。html5提供了Server-Sent Events方法,通过服务器发送事件,更新能够自动到达。

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_sse.php");
source.Onmessage=function(event)
{
    document.getElementById("result").innerHTML+=event.data + "
"; };

服务器端代码实例

链接事件和报错事件都加上

if(typeof(EventSource)!=="undefined")
{
    var source=new EventSource("server.php");
    source.Onopen=function()
    {
         console.log("Connection to server opened.");
    };
    source.Onmessage=function(event)
    {
        document.getElementById("result").innerHTML+=event.data + "
"; }; source.Onerror=function() { console.log("EventSource failed."); }; } else { document.getElementById("result").innerHTML="抱歉,你的浏览器不支持 server-sent 事件..."; }

我们会发现,控制台打印如下:

不停的进入链接、和错误,详情请点击

那是因为php代码只是简单的echo,并没有连续输出,我们把上面php代码做如下改进

就不会出现不停错误了!

IE浏览器兼容解决方案

我们知道,IE浏览器并不支持EventSource,有如下解决方案:

引入

eventsource.min.js

就可以完美解决。可以查看其github地址:https://github.com/Yaffle/EventSource 结合nodejs使用也很方便,直接

npm install event-source-polyfill

相信看了本文案例你已经掌握了方法,更多精彩请关注 第一PHP社区 其它相关文章!

推荐阅读:

H5实现可缩放的时钟动画

前缀data-属性和dataset的使用方法

以上就是H5的之sse服务器发送事件EventSource详解的详细内容,更多请关注 第一PHP社区 其它相关文章!


推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • 提升开发技能的八大策略与方法
    许多前端开发人员和客户都在寻求具备创新和技术能力的专业人才,但往往由于缺乏足够的曝光度和声誉,这些人才难以被潜在客户发现。本文将介绍八种有效策略和方法,帮助开发者提升技能并增强市场竞争力。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • Gear 月度进展报告:2023年7月最新动态与技术升级
    Gear 月度进展报告:2023年7月最新动态与技术升级 ... [详细]
  • 巴比特 | 每日元宇宙精选:高端VR设备年销量突破千万,行业或将迎来转折点? ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 特斯拉的盈利之谜:净利润未必源自汽车销售
    近日,特斯拉因客户投诉再度成为舆论焦点。一位车主反映其购买仅6天的Model 3在使用官方超级充电桩时突然断电,引发了对特斯拉产品质量和售后服务的质疑。然而,特斯拉的盈利模式并不仅限于汽车销售,其净利润可能更多地来自其他业务板块,如能源服务、自动驾驶技术和软件订阅等。这些多元化收入来源为特斯拉的财务表现提供了更多支撑。 ... [详细]
  • NoSQL数据库,即非关系型数据库,有时也被称作Not Only SQL,是一种区别于传统关系型数据库的管理系统。这类数据库设计用于处理大规模、高并发的数据存储与查询需求,特别适用于需要快速读写大量非结构化或半结构化数据的应用场景。NoSQL数据库通过牺牲部分一致性来换取更高的可扩展性和性能,支持分布式部署,能够有效应对互联网时代的海量数据挑战。 ... [详细]
author-avatar
贺扇面儿_263
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有