我是靠谱客的博主 心灵美芝麻,最近开发中收集的这篇文章主要介绍短轮询 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 无需任何重新配置​​即可通过大多数防火墙。
  • 良好的安全模型(基于来源的安全模型)。

最后

以上就是心灵美芝麻为你收集整理的短轮询 vs 长轮询 vs Web Sockets(长连接和短连接)的全部内容,希望文章能够帮你解决短轮询 vs 长轮询 vs Web Sockets(长连接和短连接)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部