即时通讯的方案
1. 短轮询
2. 长轮询
3. SSE
4. WebSocket
– 短轮询
客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。前端通常采取setInterval或者setTimeout去不断的请求服务器数据
– 长轮询
> 客户端发送一个请求到服务端,如果服务端没有新的数据,就保持住这个连接直到有数据。一旦服务端有了数据(消息)给客户端,它就使用这个连接发送数据给客户端。接着连接关闭。
优点:对比轮询做了优化,有较好的时效性。
缺点:占较多的内存资源与请求数。
– SSE(Sever-Send Event 服务端推送事件)
严格地说,HTTP 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息
(streaming)。
阮一峰(www.ruanyifeng.com/blog/2017/0…)
也就是说,发送的不是一次性的数据包,而是一个
数据流
,会连续不断地发送过来。这时,客户端不会关闭连接
,会一直等着服务器发过来的新的数据流,视频播放
就是这样的例子。本质上,这种通信就是以流信息
的方式,完成一次用时很长的下载。
SSE是一种基于HTTP协议,允许服务端向客户端推送数据的
HTML5技术
,缺点
:兼容性不好(IE,Edge不支持);服务器只能单向推送数据到客户端;
– WebSocket
- HTML5 WebSocket规范定义了一种API,使Web页面能够使用WebSocket协议与远程主机进行双向通信。与轮询和长轮询相比,巨大减少了不必要的网络流量和等待时间。
- WebSocket属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。但不是基于HTTP协议的,只是在建立连接之前要借助一下HTTP,然后在第一次握手是升级协议为ws或者wss。
具体详解查看
:juejin.cn/post/684490…
优点:开销小,双向通讯,支持二进制传输。
缺点:开发成本高,需要额外做重连保活。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END