LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

HTTP 长轮询与 WebSockets

admin
2024年10月18日 21:13 本文热度 98

HTTP 长轮询

它解决了在 Web 上构建双向应用程序的问题 — 一个专为客户端发出请求而服务器响应的单向世界而设计的平台。这是通过颠倒请求-响应模型来实现的:

  1. 客户端向服务器发送 GET 请求: 与传统的 HTTP 请求不同,您可以将其视为开放式请求。它不是要求特定的响应,而是在准备好时请求任何响应。

  2. 时间流逝: HTTP 超时可使用 Keep-Alive 标头进行优化。长轮询通过设置非常长或无限期的超时时间来利用这一点,因此即使服务器没有立即响应,请求也会保持打开状态。

  3. 服务器响应: 当服务器有要发送的内容时,它会通过响应关闭连接。这可能是新的聊天消息、更新的体育比分或突发新闻提醒。

  4. 客户端发送新的 GET 请求,然后循环再次开始。

HTTP 长轮询成功的关键在于,它不会改变基本原理,尤其是在客户端上。但是,大多数工作都需要在服务器上进行。特别是,管理可能数十万个连接的状态是资源密集型的。

当使服务器能够将数据推送到 Web 客户端时,HTTP 长轮询是一种解决方法。它使 HTTP 略微变形,为我们提供了一种广泛可用的方法,让 Web 服务器将数据推送到 Web 客户端。要了解长轮询在哪些方面有用,我们应该看看它在哪些方面做得好,在哪些方面做得不够。

优点和缺点

  • 几乎在每个 Web 客户端中都可用: 因为它使用基本的 HTTP 请求-响应周期,所以几乎所有允许您调整超时并支持 XMLHttpRequest 的支持 HTTP 的客户端(浏览器、库、IoT 设备等)都已经支持长轮询。

  • 您的 Web 服务器已经支持它: 尽管您需要编写自己的代码来处理轮询在应用程序后端的工作时间,但长轮询适用于现有的 Web 基础架构。

  • 未被防火墙阻止: 现代实时协议使用与 HTTP 不同的端口,有些协议使用 UDP 而不是 TCP。尽管问题比以前小得多,但一些公司防火墙可能会阻止这些协议,但不会阻止 HTTP。

  • 效率低下且速度慢: 现代实时协议(如 WebSocket)产生的开销比长轮询少得多。他们设置单个持久连接并根据需要发送数据。长轮询需要每次服务器向客户端发送内容时进行完整的 HTTP 握手。这会浪费带宽并增加延迟。

  • 规模有点复杂: 我们要求它做的越多,长轮询作为一种解决方法的状态就越清晰。跨多个服务器扩展长轮询意味着在基本无状态协议中跟踪会话状态。

  • 难以做出保证: 很难保证消息会按顺序从服务器到达客户端,或者根本无法保证。例如,如果客户端打开了两个使用相同服务器资源的浏览器选项卡,并且客户端应用程序将数据保存到本地存储(如 localStorage 或 IndexedDb),则无法内置保证不会多次写入重复数据。

WebSockets 浏览器

WebSocket 是一种实时技术,它通过持久的单套接字连接在客户端和服务器之间实现双向、全双工通信。WebSocket 连接根据需要保持活动状态,允许服务器和客户端以最小的开销随意发送数据。

WebSocket API 是一个编程接口,用于创建 WebSocket 连接并管理 Web 应用程序中客户端和服务器之间的数据交换。它为开发人员提供了一种在其应用程序中使用 WebSocket 协议的简单标准化方法。

如今,几乎所有现代浏览器都支持 WebSocket API。此外,还有大量框架和库(包括开源和商业解决方案)实现 WebSocket API。

例如,您可以使用 WebSockets 来:

  • 强大的实时聊天体验。

  • 广播实时事件数据,例如实时比分和流量更新。

  • 促进共享项目和白板上的多人协作。

  • 发送通知和警报。

  • 使您的后端和前端保持实时同步。

  • 将实时位置跟踪功能添加到城市交通和食品配送应用程序。

建立 WebSocket 连接的过程称为开始握手,包括客户端和服务器之间的 HTTP 请求/响应交换。成功打开握手后,客户端和服务器可以通过持久 WebSocket 连接交换消息(帧)。WebSocket 消息可能包含字符串(纯文本)或二进制数据。一旦持久 WebSocket 连接达到其目的,就可以终止它;客户端和服务器都可以通过发送 close 消息来启动结束握手。

WebSocket 优势

  • WebSockets 保持唯一的连接打开,同时消除了长轮询引起的延迟问题。

  • 支持全双工异步消息传递,以便客户端和服务器都可以独立地将消息流式传输到彼此。

  • WebSockets 通常不使用 ,因此,不会在每个服务器请求上发送标头。这反过来又减小了数据有效负载的大小。XMLHttpRequest

  • WebSockets 无需任何重新配置即可通过大多数防火墙,并且具有基于源的安全模型。

WebSocket 的缺点

  • 当连接终止时,WebSockets 不会自动恢复 — 这是您需要自己实现的事情,也是存在许多客户端库的部分原因。

  • 这并不完全是一个缺点,但值得一提的是 WebSocket 是有状态的,这意味着如果您水平扩展,您将不得不考虑如何管理状态。


该文章在 2024/10/19 12:20:47 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved