短轮询 vs 长轮询 vs Web Sockets(长连接和短连接)

短轮询 vs 长轮询 vs Web Sockets
短轮询 vs 长轮询 vs Web Sockets

个人感觉,长连接短连接是错误的描述,应该是长轮询短轮询

编码员你好!!今天我们将讨论从服务器检索数据的各种技术。

在我们继续之前,我希望您了解客户端-服务器架构

具有客户端-服务器模型流程的基本 Web 应用程序如下:-

  • 客户端发出 HTTP 请求,从服务器请求网页。
  • 服务器计算响应
  • 服务器将响应发送给客户端

让我们从轮询究竟意味着什么开始?

轮询是一种客户端定期向服务器询问新数据的技术。

短轮询

短轮询是一个基于 AJAX 的计时器,它以固定的延迟调用。

简短的轮询技术:

  1. 客户端向服务器发出请求
  2. 服务器可以通过两种方式响应:
    • 它发送一个空响应
    • 它在其主体中发送数据对象(JSON 对象)
  3. 一旦客户端收到服务器的响应,它会等待几秒钟并重复上述过程。

短轮询的一些挑战:

向服务器发出重复请求会浪费资源,因为必须建立每个新的传入连接,必须传递 HTTP 标头,必须执行对新数据的查询,并且必须生成和传递响应(通常没有提供新数据) . 必须关闭连接并清除所有资源。

长轮询

长轮询在以下方面与短轮询不同:

  1. 客户端向服务器发出请求
  2. 服务器可以通过两种方式响应:
    • 如果它有一些新数据可用,它可以立即响应。
    • 如果它没有任何新数据,它将保持该连接打开一段时间,当它接收到新数据时,它将用更新的数据进行响应。

简而言之,它是一种机制,其中客户端使用常规 HTTP 请求不断向服务器询问新信息,而服务器在没有新信息要报告时停止其回答。

只要客户端确保它不断打开轮询请求,它就会在信息可用后迅速从服务器接收信息。

为了防止连接超时(由于缺乏活动而被中止),长轮询技术通常为每个请求设置一个最长时间,在此之后服务器无论如何都会响应,即使它没有什么可重复的,之后客户端将开始一个新的请求。

定期重新启动请求也使该技术更加健壮,允许客户端从临时连接故障或服务器问题中恢复。

使用长轮询的繁忙服务器可能有数千个等待请求,因此 TCP 连接打开。NodeJS可以轻松管理多个连接,而无需为每个连接创建单独的控制线程,非常适合这样的系统。

长轮询的一些挑战:

  • 消息排序和传递保证:如果同一个客户端打开到服务器的多个连接,则无法保证消息排序。
  • 如果客户端无法接收消息,则可能会丢失消息。
  • 性能和扩展
  • 设备支持和回退

网络套接字

WebSocket 是一种计算机通信协议,它通过单个 TCP 连接提供全双工通信通道。

WebSocket 协议支持客户端和 Web 服务器之间以较少的开销进行交互,提供从服务器到服务器的实时数据传输。WebSockets 保持连接打开,允许消息在客户端和服务器之间来回传递。通过这种方式,可以在客户端和服务器之间进行双向正在进行的对话。

Web Sockets 相对于长轮询的一些优势:

  • WebSockets 保持独特的连接打开,同时消除长轮询引起的延迟问题。
  • 长轮询在服务器上占用的资源要多得多,而 WebSockets 在服务器上的占用空间非常小。
  • WebSockets 无需任何重新配置​​即可通过大多数防火墙。
  • 良好的安全模型(基于来源的安全模型)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值