gpt4 book ai didi

java - Xmpp 与 Websocket

转载 作者:IT老高 更新时间:2023-10-28 20:21:54 25 4
gpt4 key购买 nike

我即将开发一个具有近乎实时聊天功能的网站。我知道它可以使用 xmpp 或 websocket 协议(protocol)来实现。我也知道xmpp协议(protocol)是1999年开发的,我想现在应该已经成熟了。而websocket协议(protocol)是2011年开发的。

  1. 如果 xmpp 能够很好地处理实时对话,那么对 websocket 的需求是什么?
  2. 这两种协议(protocol)的主要区别是什么?
  3. 我什么时候应该选择其中一个而不是另一个?

最佳答案

简短的回答是“两者”。

XMPP 是一组用于进行实时聊天(以及许多其他事情)的应用程序协议(protocol) - 然后它必须以某种方式通过网络传输,因此您需要传输绑定(bind)。 XMPP 有三个主要的传输绑定(bind) -

  1. TCP/IP,这是人们通常在 Internet 上与设备上的 native 客户端使用的方式
  2. HTTP(称为 BOSH),这是在浏览器中使用 XMPP 时传统使用的方式(因为浏览器中的 Javascript 应用程序无法使用 TCP-IP)
  3. Websockets,这是在现代浏览器中执行 XMPP 时使用的一种。

因此,如果您在浏览器中开发聊天应用程序,您会选择 XMPP 作为应用程序协议(protocol),并使用 websockets(在现代浏览器中)或 BOSH(在旧浏览器中)作为网络传输。如果您使用像 Stanza.io (https://github.com/otalk/stanza.io) 这样的 Javascript 的 XMPP 库,它会同时支持这两者,并且您只会考虑“XMPP”而不是传输层,而不是在设置时必须告诉它要连接到哪个端点。

(您不能使用“仅 websockets”进行聊天 - 您可以在没有 XMPP 的情况下使用 websockets,但这真正意味着您正在发明自己的应用程序层协议(protocol)进行聊天,而且您很可能是通过利用已经编写的具有有用属性(安全性、身份、可扩展性等)的工作,并且通过使用 XMPP 替代现有的库和服务器,将节省大量时间和头痛。)

关于java - Xmpp 与 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com