长短轮询和WS间的区别
文章类型:Javascript
发布者:admin
发布时间:2023-02-27
一. 短轮询(Short Polling)
原理:
每隔一段时间向浏览器发送 http 请求,服务器端在收到请求后,不论是否有数据更新,都响应,
本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化
优缺点
1:比较简单,易于理解。
2:不断的建立 http 连接,严重浪费了服务器端和客户端的资源
二. 长轮询(Long Polling)
原理:
客户端向服务器发起请求,服务器收到客户端请求后,不会直接进行响应,先挂起,然后判断服务器端数据是否有更新。
如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制才返回。客户端在处理完返回的信息后,再次发出请求,重新建立连接。
优缺点
1:多次请求-响应基于一条连接,避免资源浪费。
2:连接挂起也会导致资源的浪费
三:单向服务器推送:Server-Sent Events(SSE)
原理:
SSE的本质是一个HTTP的长连接,不过发送的不是一次性的数据包,而是一个stream流,格式为text/event-stream。客户端不会关闭连接,会一直等着发过来的新的数据流
优缺点:
1:
使用 HTTP 协议,现有的服务器软件都支持
轻量级,使用简单
默认支持断线重连
支持自定义发送的消息类型
2:
只用来传送文本,二进制数据需要编码后传送
四. 全双工通信(WebSocket)
原理:
WebSocket 是一个全双工的协议,也就是通信双方是平等的,可以相互发送消息。协议标识符是ws(如果加密,则为wss),服务器网址就是 URL
tcp链路建立以后,后续所有数据双方都主动发送,不需要发送请求头
允许由服务器主动的向客户端推送信息,可以更灵活的控制连接关闭的时机
优缺点
1:
减少传统沦陷和http链接数量开销
建立在 TCP 协议之上,服务器端的实现比较容易
HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,能通过各种 HTTP 代理服务器
数据格式比较轻量,性能开销小,通信高效
可以发送文本,也可以发送二进制数据
没有同源限制,客户端可以与任意服务器通信
2:
WebSocket 协议的缺点是在服务器端的配置比较复杂