常用的消息推送方式

时间:2024-10-12 17:18:14

常用的消息推送方式

轮询

  • 什么是轮询? 游览器以一定的时间间隔去发送http请求个服务器,之后服务器再响应实时的数据给游览器。
  • 轮询的优点 实现简单、兼容性强
  • 轮询的缺点 容易造成请求浪费,因为存在间隔,所以会导致数据不是最新的数据。造成服务器资源的浪费

常用的消息推送方式_服务器

长轮询

  • 什么是长轮询? 游览器发送ajax请求,服务器收到请求后,会阻塞请求,直到数据更新后或者超时才返回数据给游览器。
  • 长轮询的优点 相对于轮询来说,更新的数据实时性提升了,并且减少了一些无效的请求
  • 长轮询的缺点‘’
  • 资源占用增加,因为在返回之前一直是阻塞的状态。相对于轮询来说实现的兼容性和复杂性有提升。
  • 常用的消息推送方式_数据_02

SSE(server-send-event)服务器发送事件

  • 什么是SSE SSE是一种游览器向服务器建立连接后,会创建一个单向通道,当服务器有数据变动的时候就会通过该通道把数据以流的形式传送给游览器或者客户端。 格式是text/event-stream。
  • SSE的优点 SSE的实现相对简单,只需使用标准的HTML5和JavaScript。 如果连接意外中断,浏览器会自动尝试重连,无需额外编程。 SSE使用标准的HTTP协议,这使得它可以通过现有的基础设施(如负载均衡器和代理)进行处理。 SSE发送的数据是文本格式(UTF-8),易于解析和调试。 由于服务器主动推送数据,可以实现较低的延迟,适合实时应用
  • SSE的缺点
  • SSE仅支持服务器到客户端的单向数据流,如果需要双向通讯,需结合其他技术(如WebSocket)。 虽然大多数现代浏览器都支持SSE,但一些旧版浏览器可能不支持。 每个SSE连接都会占用一个HTTP连接,长时间保持连接可能导致服务器资源占用增加。 默认情况下,SSE请求受同源策略限制,跨域请求需要适当配置CORS。 SSE确保消息的顺序,但在高负载情况下,可能会出现延迟或丢失的情况。
  • 常用的消息推送方式_数据_03

WebSocket

WebSocket 是一种基于 TCP 的网络通信协议,允许在客户端和服务器建立全双工的通信通道。

全双工和半双工是什么?

全双工(Full Duplex):允许数据在两个方向上同时传输

半双工(Half Duplex):允许数据在两个方向上传输,但是同一个时间段内只允许一个方向传输

常用的消息推送方式_客户端_04

WebSocket建立连接的步骤

  1. 客户端或者游览器发送请求给服务器,携带将请求协议升级的为websocket方式。
  2. 服务器收到请求后,同意升级就会返回一个HTTP 101 状态码,表示协议切换成功。
  3. 客户端和服务器之间的连接切换为 WebSocket 协议,之后双方可以通过此连接进行双向通信

websocket的客户端API

创建websocket对象
//URL是格式:协议://ip地址:端口/访问路径。协议名称为ws

let socket = new WebSocket(URL)
webSocket对象相关事件

常用的消息推送方式_服务器_05

WebSocket 对象提供的方法

常用的消息推送方式_客户端_06

websocket的服务端API

常用的消息推送方式_服务器_07

常用的消息推送方式_客户端_08

时序图

这里最后的OnError应该是OnClose

常用的消息推送方式_数据_09

相关文章