【问题标题】:STOMP or XMPP - Over websocketSTOMP 或 XMPP - 通过 websocket
【发布时间】:2015-09-15 12:13:06
【问题描述】:
我正在从事一个涉及实时聊天(消息,包括群聊)的项目。
我以前使用过 websockets,所以我开始使用 spring-websockets 来解决这个问题,并且我阅读了一些关于什么是实现它的最佳方式的信息。然后我遇到了 STOMP(作为 websockets 的子协议),由于春季有对 STOMP 的直接支持,所以实现我应该做的事情有点容易。
但我怀疑 STOMP 和 XMPP 是相似的协议(消息协议),但我找不到任何解释差异的问题/博客以及为什么有人会更喜欢一个?
如果有人解释这两种协议有何不同,那将非常有帮助?
谢谢。
【问题讨论】:
标签:
spring
xmpp
stomp
spring-websocket
【解决方案1】:
作为 Jabber 的继任者,XMPP 更专注于即时通讯而不是 STOMP。 XMPP 是一个可扩展的协议,可以用于其他目的,但是有很多关于 IM 的内置机制和实现。 STOMP 提供了一个更通用的机制,这里的“消息”是一个广义的含义。
假设您为您的项目选择了 STOMP。然后,您可能需要为 XMPP 已经提供的某些场景(点对点、群聊)定义基本消息。
比较两个协议;
- STOMP 消息以纯文本形式(如其名称所示)传送,而 XMPP 以 XML 结构。
- STOMP 连接可以通过 TCP 或 WebSockets 建立。 XMPP 支持 TCP 或 HTTP(WebSocket 标准也是propopsed)。
- 在 Java 世界中,Spring 具有说话 STOMP 的能力,并且非常容易实现。但是,可以通过添加 3rd Party API(即Smack)来添加 XMPP 支持