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协议的长轮询机制,适用于一方发送消息,一方只接收的情况。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6