轮询、长轮询、长连接、websocket

短轮询
  • 基本思路:浏览器每隔一段时间向浏览器发送http请求,服务器端在收到请求后,不论是否有数据更新,都直接进行响应。

  • 特征: 本质上还是浏览器发送请求,服务器接受请求的一个过程,通过让客户端不断的进行请求,使得客户端能够模拟实时地收到服务器端的数据的变化。

  • 优点:比较简单,易于理解,实现起来也没有什么技术难点

  • 缺点:需要不断的建立http连接,严重浪费了服务器端和客户端的资源。人数越多,服务器端压力越大,不适用于那些同时在线用户数量比较大,并且很注重性能的Web应用。

长轮询:
  • 基本思路:当服务器收到客户端发来的请求后,服务器端不会直接进行响应,而是先将这个请求挂起,然后判断服务器端数据是否有更新。如果有更新,则进行响应,如果一直没有数据,则到达一定的时间限制(服务器端设置)才返回。客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。

  • 优点: 减少了很多不必要的http请求次数,节约了资源

  • 缺点:连接挂起也会导致资源的浪费。

长连接:
  • 基本思路:基于http协议,允许服务推送数据到客户端。不需要客户端发送请求,可以实现只要服务器端数据有更新,就可以马上发送到客户端。

  • 优点:不需要建立或保持大量的客户端发往服务器端的请求,节约了很多资源,提升应用性能。实现非常简单,并且不需要依赖其他插件。

WebSocket:

基本思路:Html5定义的一个新协议。可以实现服务器与客户端之间全双工通信。简单来说,首先需要在客户端和服务器端建立起一个连接,这部分需要http。连接一旦建立,客户端和服务器端就处于平等的地位,可以相互发送数据,不存在请求和响应的区别。

  • 优点:实现了双向通信

  • 缺点:服务器端的逻辑非常复杂。

从兼容性角度考虑,短轮询>长轮询>长连接SSE>WebSocket;

从性能方面考虑,WebSocket>长连接SSE>长轮询>短轮询。

原文链接:https://cloud.tencent.com/developer/article/1076547

你可能感兴趣的:(轮询、长轮询、长连接、websocket)