Xmpp vs Websocket [已关闭]

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

  1. 如果xmpp擅长处理实时对话,那么对websocket的需求是什么?
  2. 这两种协议之间的主要区别是什么?
  3. 我什么时候应该选择其中之一而不是另一个?

答案 1

简短的回答是“两者兼而有之”。

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

  1. TCP / IP,这是人们通常在互联网上使用设备上的本机客户端
  2. HTTP(称为BOSH),这是传统上在浏览器中使用XMPP时使用的(因为TCP-IP对浏览器中的Javascript应用程序不可用)
  3. Websockets,这是在现代浏览器中执行XMPP时使用的一种。

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

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


答案 2

推荐