我想知道我是否必须使用套接字或BOSH来实现XMPP客户端,哪种连接是最好的方法?优缺点都有什么?我假设两者都可以支持客户端与服务器在不同的网络上?
答案 0 :(得分:3)
我认为socket和bosh之间的最大区别在于bosh使用的是stateless(连接已关闭)与套接字的HTTP。这意味着您可以在使用BOSH时从浏览器中连接到XMPP。我不明白你为什么要创建一个BOSH客户端,因为strophe.js是一个非常好的bosh客户端。还有几乎所有可用语言的套接字实现。如果你问我,那就是关于XMPP的好想法。
答案 1 :(得分:1)
这当然不是所有优点和缺点的明确列表,而是我在尝试实现跨网络加密的Openfire连接时遇到的那些。
<强>插槽强> 一个插槽连接专业版:支持自动TLS加密。
套接字连接的一个可能的结果:我最近了解到,如果Openfire服务器与连接到该服务器的客户端位于不同的网络上,则使用套接字连接可能会出现问题,在这种情况下,连接到服务器的能力可以受连接网络防火墙和通过标准5222套接字端口连接的能力的支配。
<强> HTTP-绑定强>
Http-Bind Pro:可以通过使用标准的Http端口缓解上述网络间连接问题。
Http-Bind的一个Con:似乎不支持自动TLS加密,而是依赖于加密通信的“旧SSL”标准,许多XMPP库似乎不支持这种标准。