服务器端推送技术描述
不论是传统的HTTP请求-响应式的通信模式, 还是异步的AJAX式请求, 服务器端始终处于被动的应答状态, 只有在客户端发出请求的情况下, 服务器端才会返回响应。 这种通信模式被称为客户端拉取(client pull) 。 在这种模式下, 用户只能通过刷新页面或主动单击加载按钮来拉取新数据。
然而, 在某些场景下, 我们需要的通信模式是服务器端的主动推送(server push) 。 比如, 一个聊天室有很多个用户, 当某个用户发送消息后, 服务器接收到这个请求, 然后把消息推送给聊天室的所有用户。类似这种关注实时性的情况还有很多, 比如社交网站在导航栏实时显示
新提醒和私信的数量, 用户的在线状态更新, 股价行情监控、 显示商品库存信息、 多人游戏、 文档协作等。
实现服务器端推送的一系列技术被合称为HTTP Server Push(HTTP服务器端推送)
常用推送技术
- **传统轮询:**在特定的时间间隔内,客户端使用AJAX技术不断的向服务器发HTTP请求,然后获取新的数据并更新页面
- **长轮询:**和传统轮询类似,但是如果服务器端没有返回数据,那就保持连接一直开启,直到有数据时才返回。取回数据后再次发送另一个请求
- Server-Sent Events(SSE): SSE通过HTML5中的EventSource API实现。SSE会在客户端和服务器端建立一个单向的通道,客户端监听来自服务器端的数据,而服务器端可以在任意时间发送数据,两者建立类似订阅/发布的通信模式。
简单对比
轮询(polling) 这类使用AJAX技术模拟服务器端推送的方法实现起来比较简单, 但通常会造成服务器资源上的浪费, 增加服务器的负担, 而且会让用户的设备耗费更多的电量(频繁地发起异步请求) 。SSE效率更高, 在浏览器的兼容性方面, 除了Windows IE/Edge, SSE基本上支持所有主流浏览器, 但浏览器通常会限制标签页的连接数量。
转载:https://blog.csdn.net/sty945/article/details/100927574
查看评论