STOMP或XMPP - Over websocket

时间:2015-06-29 06:03:41

标签: spring xmpp stomp spring-websocket

我正在开展一个涉及实时聊天(消息传递,包括群聊)的项目。

之前我曾使用过websockets,所以我开始使用spring-websockets开始研究它,我做了一些关于实现它的最佳方法的阅读。然后我遇到了STOMP(作为websockets的子协议),因为在春天直接支持STOMP,实现我应该做的事情有点容易。

但我的疑问是,就我的理解STOMP和XMPP是类似的协议(消息传递协议),但我找不到任何问题/博客,其中解释差异,为什么有人更喜欢一个而不是另一个?

如果有人解释这两种协议有何不同,那将会非常有用吗?

谢谢。

1 个答案:

答案 0 :(得分:18)

作为Jabber的继任者,XMPP更专注于即时消息而不是STOMP。 XMPP是一种可扩展的协议,可以用于其他目的,但有很多关于IM的内置机制和实现。 STOMP提供了更通用的机制,这里的“消息”指的是广泛的含义。

假设您为项目选择STOMP。然后,您可能需要为XMPP已经提供的某些场景(点对点,群聊)定义基本消息。

比较两种协议;

  • STOMP消息作为纯文本(如其名称所示)携带,而XMPP结构为XML。
  • 可以通过TCP或WebSockets建立STOMP连接。 XMPP支持TCP或HTTP(WebSocket标准也是propopsed)。
  • 在Java世界中,Spring能够与STOMP交谈,并且它非常容易实现。但是,可以通过添加第三方API(即Smack
  • 来添加XMPP支持