
SSE的轻量级替代WebSocket
一、背景
需求中时常会有需要等待后端响应的异步操作,如支付完成查询支付状态、聊天、扫码登录等等,很多时候扫码登录、支付状态都会使用轮询,只是短时间的查询。客服聊天可能需要WebSocket。
思考
※ 轮询的缺点
网络带宽:
频繁的请求可能导致不必要的网络流量,增加带宽消耗。
服务器负载:
每次请求都需要服务器处理,即使是空返回,也会增加服务器的CPU和内存负载。
用户体验:
频繁的请求和更新可能会造成用户界面的卡顿,影响用户体验。
※ websocket的缺点
实现复杂性:
WebSocket 是一种全双工通信协议,需要在客户端和服务器之间建立一个持久的连接,这涉及到更多的编程复杂性。
服务器资源消耗:
WebSocket 连接需要更多的服务器资源来维护,因为它们是全双工的,服务器需要监听来自客户端的消息。
二、 详细对比
以下是 WebSocket、轮询和 SSE 的对比表格:
三、 SSE(Server-Sent Events)介绍
Server-Sent Events (SSE)
是一种允许服务器主动向客户端浏览器推送数据的技术。它基于 HTTP 协议
,但与传统的 HTTP 请求-响应模式不同,SSE 允许服务器在建立连接后,通过一个持久的连接不断地向客户端发送消息。
工作原理
建立连接:
客户端通过一个普通的 HTTP 请求订阅一个 SSE 端点。
服务器响应这个请求,并保持连接打开,而不是像传统的 HTTP 响应那样关闭连接。
服务器推送消息:
一旦服务器端有新数据可以发送,它就会通过这个持久的连接向客户端发送一个事件。
每个事件通常包含一个简单的文本数据流,遵循特定的格式。
客户端接收消息:
客户端监听服务器发送的事件,并在收到新数据时触发相应的处理程序。
连接管理:
如果连接由于任何原因中断,客户端可以自动尝试重新连接。
四、使用场景
倒计时同步时间
实时天气
库存实时更新
AI对话
秒杀状态
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果