我将要开发一个具有近实时聊天功能的网站。我知道可以使用xmpp或websocket协议来实现。我也知道xmpp协议是在1999年开发的,我想它应该已经很成熟了;另一方面,websocket协议是在2011年开发的。
- 如果xmpp能够很好地处理实时对话,那么对websocket的需求是什么?
- 两种协议之间的主要区别是什么?
- 我何时应该选择其中一个呢?
我将要开发一个具有近实时聊天功能的网站。我知道可以使用xmpp或websocket协议来实现。我也知道xmpp协议是在1999年开发的,我想它应该已经很成熟了;另一方面,websocket协议是在2011年开发的。
Answers:
简短的答案是“两者”。
XMPP是用于进行实时聊天(以及许多其他事情)的一组应用程序协议-然后必须以某种方式在网络上进行传输,因此您需要进行传输绑定。XMPP有三种主要的传输绑定-
因此,如果要在浏览器中开发聊天应用程序,则选择XMPP作为应用程序协议,并使用websocket(在现代浏览器中)或BOSH(在较旧的浏览器中)作为网络传输。如果您使用Stanza.io(https://github.com/otalk/stanza.io)之类的XMPP库来支持Javascript ,则它将同时支持这两种库,并且您只会考虑使用“ XMPP”而不是传输层,除了在安装时,您必须告诉它要连接到哪个端点。
(您不能使用“仅websockets”进行聊天-您可以在不使用XMPP的情况下使用websockets,但这实际上意味着您正在发明自己的应用程序层协议进行聊天,并且很可能节省了通过利用已经编写好的具有有用属性(安全性,身份,可扩展性等)的工作而花费很多时间和头痛,而通过使用XMPP来为已有的库和服务器编写工作。