我正在开发一个涉及实时聊天(消息传递,包括群聊)的项目。
我以前使用过 websockets,所以我开始使用 spring-websockets 来研究这个问题,并且我阅读了一些关于实现它的最佳方法的文章。然后我遇到了 STOMP(作为 websockets 的子协议),并且由于 Spring 直接支持 STOMP,所以很容易实现我应该做的事情。
但我的疑问是,据我了解 STOMP 和 XMPP 是相似的协议(消息传递协议),但我找不到任何问题/博客来解释这些差异以及为什么有人会更喜欢其中一个?
如果有人解释这两种协议有何不同,那将会非常有帮助?
谢谢。
作为 Jabber 的继承者,XMPP 更专注于即时消息而不是 STOMP。 XMPP 是一个可扩展的协议,可以用于其他目的,但有大量关于 IM 的内置机制和实现。 STOMP 提供了更通用的机制,这里的“消息”指的是广泛的含义。
假设您为您的项目选择 STOMP。然后,您可能需要为 XMPP 已经提供的某些场景(点对点、群聊)定义基本消息。
比较两个协议;
- STOMP 消息以纯文本形式传送(如其名称所示),而 XMPP 则以 XML 结构。
- STOMP 连接可以通过 TCP 或 WebSocket 建立。 XMPP 支持 TCP 或 HTTP(WebSocket 标准也是提议的 https://www.rfc-editor.org/rfc/rfc7395).
- 在Java世界里,Spring https://spring.io/guides/gs/messaging-stomp-websocket/具有说话STOMP的能力并且非常容易实现。但是,可以通过添加第 3 方 API(即Smack https://www.igniterealtime.org/projects/smack/)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)