前言
众所周知,AJAX的出现是前端快速发展的一个标志,同时也是前后端得以分离的重要基础。作为一个C/S网络的web系统,网络通信在发挥着举足轻重的作用。
大部分的场景下,我们是主动触发AJAX去调取后端数据,但是总有那么些场景是后端数据更新了再推送给前端。
本文则试着和读者一起对这个数据推送的需求进行技术方案的探究。
首先,列一个常用可选的技术清单
- websocket
- SSE(Server-Sent Event)
- 轮询(长轮询)
数据推送
数据推送是由服务端选择向客户端发送新数据。
当数据源有新数据时,服务端能立刻将它发送给一个或多个客户端,而不用等客户端来请求。
数据推送有两种替代方案:无更新方案和数据拉取方案。
数据拉取和数据推送的功能目标是一致的:让用户看到最新的数据。但数据推送有一些优势,即更低的延迟。
但是在数据拉取的方式中,权衡会让你很纠结,要缩短延迟就要提高轮询的频次,要节省带宽和连接就要降低轮询的频次。