如何避免 XMPP 中的长寿命 tcp 连接,以便服务器可以处理数百万用户?

     2023-02-23     304

关键词:

【中文标题】如何避免 XMPP 中的长寿命 tcp 连接,以便服务器可以处理数百万用户?【英文标题】:How to avoid long-lived tcp connection in XMPP so that server can handle millions of users? 【发布时间】:2013-06-01 12:09:32 【问题描述】:

如果答案是“使用 xmpp BOSH”,那么要使用 BOSH,我们需要有中间的 CM(连接管理器)服务器来与 xmpp 服务器交互。这样 xmpp 客户端到 CM 的交互将通过正常的 http 协议(可扩展)发生,但 CM 到 xmpp 服务器将再次使用长寿命 tcp 连接发生,这将导致可扩展性问题。

我们如何使 xmpp 客户端-服务器更具可扩展性??

【问题讨论】:

【参考方案1】:

Bidirectional-streams Over Synchronous HTTP (BOSH) 基本上是一种保持连接活动以允许系统来回发送和接收数据的技术。为了能够通过 HTTP 使用 xmpp,您必须使用 BOSH。

如果您担心可扩展性,您基本上可以使用旨在实现可扩展性的组件,例如 Nginx 组件来代替 Apache httpd,还有许多可用的连接管理器,其中旁遮普语是最具可扩展性的。如果您使用 Openfire 作为 XMPP 服务器,它有一个预构建的连接管理器,该管理器已被证明具有可扩展性。

【讨论】:

谢谢!!!所以,你的意思是说旁遮普可以拥有数千个与 XMPP 服务器的长期连接,同时通过 http 与 xmpp 客户端通信。我知道当我们想要基于 http 的客户端上的 xmpp 时必须使用 BOSH,但问题是 BOSH 是否也应该用于可伸缩性,因为 BOSH 不需要客户端和 CM 服务器(例如旁遮普)之间的长期 tcp 连接? BOSH 实际上需要客户端和服务器之间的双向长寿命 tcp 连接。您可以通过阅读xmpp.org/extensions/xep-0124.html 上的 RFC for BOSH 的摘要来理解它。据我了解,BOSH 不是一种为高可扩展性而生的技术,如果您想要客户端和服务器之间的即时协作,则应该使用它。

刷新令牌如何比长寿命的 JWT 更安全?

】刷新令牌如何比长寿命的JWT更安全?【英文标题】:HowisarefreshtokenmoresecurethanalonglivedJWT?【发布时间】:2018-07-0813:28:39【问题描述】:在将JWT用于自然不安全的客户端(浏览器、手机等)时,我很难理解刷新令牌的使用。对我... 查看详情

使用 Reactor Netty 客户端一次读取大的 JSON 有效负载,而不是分块读取长寿命持久连接

...torNetty客户端一次读取大的JSON有效负载,而不是分块读取长寿命持久连接【英文标题】:ReadbigJSONpayloadallatoncewithReactorNettyclient,andnotinchunksforkeep-alivelonglivedpersistentconnection【发布时间】:2021-05-1900:44:27【问题描述】:为了描述我... 查看详情

Oauth2 - 客户端凭证流中的长寿命令牌与重新身份验证

】Oauth2-客户端凭证流中的长寿命令牌与重新身份验证【英文标题】:Oauth2-longlivedTokensvsReauthenticationinaClientCredentialsFlow【发布时间】:2012-12-2806:07:51【问题描述】:我们已经使用OAuth2保护了我们的REST服务器,并为我们控制的多个... 查看详情

iOS,如何避免应用长寿?

】iOS,如何避免应用长寿?【英文标题】:iOS,howtoavoidappkeepinglongalive?【发布时间】:2021-08-1806:55:48【问题描述】:我在Google上搜索并没有发现任何有用的信息。而且似乎没有iOSSDK可以配置应用程序的存活时间。例如,我希望应... 查看详情

google oauth refresh token 长寿命解决方案

...成到我的Ruby应用程序中,但问题是访问令牌即将到期。如何使访问令牌长寿命。cal.login_with_refresh_t 查看详情

为啥不使用长寿命会话 ID 来代替带有令牌的持久 cookie?

】为啥不使用长寿命会话ID来代替带有令牌的持久cookie?【英文标题】:WhynotusealonglifesessionIDforauto-logininsteadofapersistentcookiewithatoken?为什么不使用长寿命会话ID来代替带有令牌的持久cookie?【发布时间】:2021-12-2511:15:35【问题描述... 查看详情

Facebook 聊天 tcp 连接如何保持活动状态?

】Facebook聊天tcp连接如何保持活动状态?【英文标题】:HowdoesFacebookchattcpconnectionkeepalive?【发布时间】:2011-11-0114:00:03【问题描述】:我用FacebookChatAPI实现了一个XMPP聊天客户端,它可以登录和聊天。但我发现Facebook聊天XMPP服务器... 查看详情

通过 Instagram 图形 api 刷新长寿命令牌

】通过Instagram图形api刷新长寿命令牌【英文标题】:Refreshlong-livedtokenviaInstagramgraphapi【发布时间】:2021-10-0701:02:13【问题描述】:我在后端拥有长期存在的用户令牌,并成功从图形API端点获取不同的信息。现在我正在尝试定期刷... 查看详情

单页应用程序 JWT,令牌刷新与长寿命令牌

】单页应用程序JWT,令牌刷新与长寿命令牌【英文标题】:SinglePageApplicationJWT,tokenrefreshingvslonglivedtokens【发布时间】:2017-04-2500:54:49【问题描述】:我正在开始一个单页应用程序,并且我正在使用JSONWeb令牌来验证客户端(带有... 查看详情

如何在目标c中通过ios中的XMPPFramework连接XMPP服务器

】如何在目标c中通过ios中的XMPPFramework连接XMPP服务器【英文标题】:HowtoconnectXMPPserverthroughXMPPFrameworkiniosinobjectivec【发布时间】:2017-01-0613:33:48【问题描述】:我在目标C中通过IOS中的XMPPFramework连接到XMPP服务器,我在viewDidLoad方... 查看详情

数据库连接失败时,如何捕捉错误,避免弹出错误提示,以便下次自动重新连接

数据库连接失败时,如何捕捉错误,避免弹出错误提示,以便下次自动重新连接主要是要避免人工介入。一旦弹出错误提示,如果没有人工介入把它关掉,则程序会一直停在那里,无法自动重新连接。 在连接的时候虽然加入... 查看详情

如何通过 vb.net 中的 xmpp dll 连接 facebook?

】如何通过vb.net中的xmppdll连接facebook?【英文标题】:howtoconnectfacebookthroughxmppdllinvb.net?【发布时间】:2014-07-1206:50:50【问题描述】:我尝试使用下面的代码通过Agsxmpp.Dll连接到Facebook,但是当我连接到它时,它显示OnAuthError事件... 查看详情

长寿命的多播 Observable,每次订阅时都会重新订阅其源

】长寿命的多播Observable,每次订阅时都会重新订阅其源【英文标题】:Long-livedmulticastingObservablethatresubscribestoitssourceeverytimeitissubscribedto【发布时间】:2019-12-2901:59:22【问题描述】:我想使用现有的rxjs操作符来创建一个多播observa... 查看详情

构建你的长寿命的api第1部分:规范驱动的api开发

构建你的长寿命的API第1部分:规范驱动的API开发     这篇文章是由MuleSoft的MikeStowe在nginx.conf2016公布的演示文稿改编的。第一部分重点是规范驱动的API开发。第二部分讨论的最佳实践。你能够查看完整的呈现的... 查看详情

XMPP:多个用户可以通过同一个 TCP 连接连接到服务器吗?

】XMPP:多个用户可以通过同一个TCP连接连接到服务器吗?【英文标题】:XMPP:canmultipleusersconnecttoaserveroverthesameTCPconnection?【发布时间】:2014-02-0112:31:14【问题描述】:我的客户通过自定义协议与我的服务器通信。现在我正在添加... 查看详情

Django XMPP 连接池

...ctionpooling【发布时间】:2011-12-1406:44:39【问题描述】:我如何在django中汇集到XMPP服务器的连接,以便它可用于多个请求。我不想在每个请求上都连接和验证,这使它有点慢。这可能吗?编辑:我正在使用xmpppypythonxmpp库【问题讨... 查看详情

产品实测远距离!低成本!长寿命!lora模块实测效果给你好看!

...技术的远距离无线传输技术,也是诸多LPWAN通信技术中的一种,最早由美国Semtech公司采用和推广。LoRa扩频技术打破了传输功耗和传输距离之间的平衡,彻底改变了嵌入式无线通信领域的局面。它给人们呈现了一个能... 查看详情

如何在 tigase 中通过 XMPP 配置 BOSH?

】如何在tigase中通过XMPP配置BOSH?【英文标题】:HowtoconfigureBOSHoverXMPPintigase?【发布时间】:2012-03-2809:04:28【问题描述】:我已经安装了tigaseXMPP服务器。现在我想配置BOSH以便通过http连接。我对这种环境非常陌生。任何帮助将不... 查看详情