首页 > 其他分享 >EventSource推送协议

EventSource推送协议

时间:2023-09-15 11:38:54浏览次数:33  
标签:协议 场景 WebSocket EventSource 服务器 推送 客户端

EventSource传输协议

最近开发项目中, 有个需求是 客户端发送指令给服务端, 服务端接收指令,进行解析,解析完成才进行返回, 由于不是实时返回,当时考虑的两种技术方案 1 运用定时器 进行轮询请求刷新, 2 应用WebSocket, 考虑 轮询请求有点占用资源, 运用WebSocket有点没必要. 然后找到了一个HTML5 的API  EventSource  下面简单来介绍一下这个API吧

EventSource是一个HTML5 API,它允许服务器向客户端发送事件流(Server-Sent Events),从而实现实时通信。与WebSocket相比,EventSource更加简单易用,并且适合于一对多的消息传递场景。

EventSource 基于HTTP长轮询(HTTP Long Poling) 技术实现,它通过一个持久连接,,不断接收服务器发送的事件流。服务器会保持连接打开,直到有新的事件发送给客户端。与WebSocket的不同点在于,EventSource 只能从服务端接收数据,客户端无法主动发送消息给服务器,这使得它更适用于需要服务器推送数据的场景。

下面进行一个简单的示例 展示如何使用EventSource接收服务器时间流:

下述用node创建一个服务 进行推送

EventSource推送协议_服务器


客户端进行接收

EventSource推送协议_服务器_02

效果图如下 已进行推送


EventSource推送协议_客户端_03

EventSource 与 WebSocket的对比

优势

1. 简单性:相对比WebSocket,EventSource 的API更加简单易用。

2. 适合单向通信:EventSource主要是用于服务器推送数据给客户端,适用于一方发送消息,一方接收的场景。

3. 兼容性:EventSource是基于HTTP协议的标准化机制,可以在大多数浏览器进行使用,WebSocket需要浏览器和服务器的支持


应用场景的区分

WebSocket 更适用于双向通信,实时性要求较高的场景,如多人聊天,协同编辑等。由于WebSocket支持全双工通信,客户端和服务端都能随时发送消息给对方,实现更紧密的实时活动

EventSource则适用于服务器向客户端推送数据的场景,如实时更新股票行情,推送系统通知,它基于HTTP协议的长轮询机制,适用于一方发送消息,一方只接收的情况。

标签:协议,场景,WebSocket,EventSource,服务器,推送,客户端
From: https://blog.51cto.com/u_16264321/7479394

相关文章

  • 初学小结使用Onvif协议进行PTZ控制
    近期由于项目原因接触到了Onvif协议,使用Onvif协议进行PTZ控制。具体的Onvif协议是什么,PTZ是什么我就不介绍了,主要实现功能的步骤简单的介绍下(主要介绍ContinuousMove功能):1、通过设备服务地址(形如http://xx/onvif/device_service),调用GetCapabilities函数接口,获取到Media的URL;2、通过......
  • EasyGBS是一款基于国标GB28181协议的视频融合管理平台,它可以实现视频资源的集中管理和
    EasyGBS国标视频融合云平台是一款基于端-边-云一体化架构的视频融合+AI智能分析网关平台,EasyGBS平台支持视频汇聚、融合管理,能兼容多类型设备、多协议接入,可提供的视频功能包括:视频监控、无插件直播录像、云存储、检索回放、智能告警、平台级联、GIS定位监测等。EasyGBS具备强大的......
  • 以太网-在同一个LAN内,主机是如何获取到目的主机的MAC地址的?ARP协议解析
    按照通讯的层级划分来说,无论设备是2层设备如交换机,3层设备如路由器,7层设备如主机,防火墙等等,所有的通讯最终都是基于2层来实现。所以获取目的主机的MAC地址是通讯的前提,获取了MAC地址才可以进行帧的封装。那么一个目标主机有几种方式可以获取到目的主机的MAC地址呢?1.ARP缓存:如......
  • 关于HTTP协议的概述
    HTTP的报文大概分为三大部分。第一部分是请求行,第二部分是请求的首部,第三部分才是请求的正文实体。POST往往是用来创建一个资源的,而PUT往往是用来修改一个资源的。Accept-Charset,表示客户端可以接受的字符集。防止传过来的是另外的字符集,从而导致出现乱码。在HTTP头里面,Cache......
  • 微信小程序隐私协议第二弹(补充说明)
    ❝微信官方发布通知有一段时间了,之前的文章也发布了一段时间了最近使用大厂的小程序发现他们也更新了对应的策略这里就分析一下他们的策略❞明天就是最后期限了,所以今天大家赶紧适配吧,不然影响小程序新版本审核和分发之前文章的代码片段要替换成自己的小程序appid,不然是测试小程序a......
  • 基于HTTP协议的客户端缓存
    提到缓存,一般都会想起redis、memcached等分布式缓存系统。虽然使用这些服务器端缓存速度能提升不少,但其实还是需要客户端下载这部分数据,目前在移动互联网领域,节省流量是很有必要的,因此工作中也就需要加入客户端缓存的相关技术。 怎么使用客户端缓存?1、用http报头中的last-modified......
  • 应用层通信协议设计
    一、应用层通信协议概述TCP/UDP是基于字节流的传输层通信协议,对于其的编程是基于IO流编程,所谓“流”,就是没有界限的一长串二进制数据。TCP/UDP作为传输层协议,并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分。所以在业务上一个完整的数据包在进行传......
  • 【HMS Core】推送自分类问题总结
    【关键字】推送、自分类权益 【问题背景】为了给用户提供更好的消息通知体验,从2023年9月15日开始,华为推送服务将对应用发送的本地通知频次及分类进行灰度管控。所以,最近收到了很多开发者关于自分类权益申请的问题,下面就来和大家一起分享一下 【问题描述与解答】1、如何申......
  • RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo
    前言  上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485。 补充  看起来很简单,弄起来不懂得就是不懂,懂得虽然懂还得花时间去研究一下开发板特性,与厂家沟通下,......
  • 动态路由协议篇:小白也能轻松理解
    在网络世界中,路由协议扮演着至关重要的角色。它们负责确定数据包在网络中的最佳传输路径,以确保数据能够安全、快速地到达目的地。而在这些路由协议中,动态路由协议因其灵活性和高效性而备受关注。接下来将带大家了解什么是动态路由协议,以及如何让小白也能轻松理解。什么是动态路由协......