通过HTTP或套接字的XMPP

4

我想知道如果我需要实现一个XMPP客户端,使用socket或BOSH哪种连接方式更好?它们各有什么优缺点?我假设两者都可以支持客户端和服务器在不同的网络上?

2个回答

3
我认为Socket和BOSH之间最大的区别在于,BOSH使用HTTP协议,该协议是无状态(连接关闭),而Socket则不同。这意味着当使用BOSH时,您可以从浏览器内部连接到XMPP。我不明白为什么您要创建一个BOSH客户端,因为strophe.js是一个非常好的BOSH客户端。此外,几乎每种可用语言都已经有了Socket实现。如果你问我,这就是XMPP的好处所在。

1

这当然不是所有优缺点的决定性列表,而是我在尝试实现跨网络加密Openfire连接时遇到的一些问题。

Socket

Socket连接的一个优点:支持自动TLS加密。

Socket连接的一个可能的缺点:最近我了解到,如果Openfire服务器与连接到该服务器的客户端位于不同的网络上,则使用套接字连接可能会出现问题,在这种情况下,连接到服务器的能力可能取决于连接网络的防火墙和通过标准5222套接字端口连接的能力。

HTTP-Bind

Http-Bind的一个优点:可以通过使用标准Http端口来缓解前面提到的跨网络连接问题。

Http-Bind的一个缺点:似乎不支持自动TLS加密,而是依赖于“旧SSL”标准进行加密通信,许多XMPP库似乎不支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接