专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

XMPP XEP-0124协议详解

在XMPP扩展协议XEP-0124中定义了一个传输协议来模拟两个实体 (例如一个客户端和一个服务器) 之间的长连双向TCP连接的语义,它有效地运用多个同步的HTTP”请求/应答”对,而不需要使用频繁的轮询或者分块响应。该协议简称BOSH(Bidirectional-streams Over Synchronous HTTP),协议的设计目标之一是提供准TCP的连接性能同时兼容受约束的运行环境。

BOSH协议正是采用ong-polling(长轮询)方式实现,也是目前最常用的方式(兼容性和性能平衡度最好)。

因为HTTP是一个同步请求/应答协议,传统的通过HTTP模拟双向流的解决方案是让客户端HTTP间歇性地轮询服务器来查询是否有任何等待发送给客户端的数据。当没有数据需要传输的时候,这种幼稚的做法在轮询的时候浪费了很多网络带宽,它也降低了应用程序的响应,因为数据要花时间排队直到服务器从客户端接收下一次轮询 (HTTP 请求) 。 这导致了响应速度和带宽之间难免顾此失彼, 因为增加轮询频率将在减少延迟的同时增加带宽消耗 (如果轮询频率降低的话,反之亦然)。长轮询比之传统轮询的优势就在于如何实现“长”这个字上。

BOSH使用的技术可以描述为:

- 客户端请求服务器后,服务器在有数据发送给客户端之前不去应答请求。服务器hold住了来自客户端的连接并等待发送给客户端的数据准备好。

- 在服务器hold住客户端连接时,若客户端需要发送数据,假如客户端支持HTTP pipline技术则只需在该连接上再发送一个请求,若不支持,则新起一个连接发送请求。

- BOSH要求同一个客户端不能同时建立超过2个并发连接

- 一旦客户端发送的第二个请求到达时,服务器立刻应答第一个请求并释放hold住的第一个请求连接,保证客户端始终能立刻发送更多数据。

- 一段时间内连接双向都无数据传输时,服务器以空数据包应答客户端,客户端收到应答后立刻发起一个新的请求,这模拟了TCP长连接的心跳机制。

- BOSH推送的每一个数据块都是完整的HTTP应答,不提供chunked传输。所以和Comet技术不像,BOSH能够绕过一些代理和缓冲机制,并完全兼容HTTP/1.0

文章永久链接:https://tech.souyunku.com/29984

未经允许不得转载:搜云库技术团队 » XMPP XEP-0124协议详解

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们