简单盘点一下服务端投送技术方案和各自的特点。
1.Ajax短轮询
Ajax短轮询:http 短轮询是 server 收到请求不管是否有数据到达都直接响应http请求;如果浏览器收到的数据为空,则隔一段时间,浏览器又会发送相同的http请求到server 以获取数据响应,就是用一个定时器不停的去网站上请求数据。
缺点:消息交互的实时性较低(server端到浏览器端的数据反馈效率低)。
2.Ajax长轮询
传统轮询类似,但是如果服务器端没有返回数据,那就保持连接一直开启,直到有数据时才返回。取回数据后再次发送另一个请求
http Keep-Alive:
请求头部和响应头部都有一个key-value , Connection: Keep-Alive,这个键值对的作用是让HTTP保持连接状态,
缺点:server 没有数据到达时,http连接会停留一段时间,这会造成服务器资源浪费;
3. Server-Sent Events(SSE)
SSE通过HTML5中的EventSource API实现。SSE会在客户端和服务器端建立一个单向的通道,客户端监听来自服务器端的数据,而服务器端可以在任意时间发送数据,两者建立类似订阅/发布的通信模式。
4. WebSocket
WebSocket 解决了 H