2015-06-29 97 views
15

我正在研究一個涉及實時聊天(消息傳遞,包括羣聊)的項目。STOMP或XMPP - 通過websocket

我以前曾經使用過websockets,所以我開始使用spring-websockets進行這方面的工作,我做了一些關於實現它的最佳方式的閱讀。然後我遇到了STOMP(作爲websockets的子協議),並且由於春天對STOMP有直接的支持,所以我很容易實現我應該做的事情。

但我的疑問就我的理解而言,STOMP和XMPP是類似的協議(消息傳遞協議),但我找不到任何問題/博客的區別解釋,爲什麼有人會更喜歡一個在另一個?

如果有人解釋這兩個協議是如何不同的話,這將會非常有用嗎?

謝謝。

回答

15

作爲Jabber的繼任者,XMPP更專注於即時消息而不是STOMP。 XMPP是一個可擴展的協議,可用於其他目的,但有大量關於IM的內置機制和實現。 STOMP提供了一個更一般的機制,這裏的「信息」指的是廣義的意思。

假設您爲您的項目選擇STOMP。那麼您可能需要爲XMPP已經提供的特定場景(對等,羣聊)定義基本消息。

比較兩種協議;

  • STOMP消息以純文本形式(如其名稱所示)傳輸,而XMPP以XML形式構造。
  • STOMP連接可以通過TCP或WebSockets建立。 XMPP支持TCP或HTTP(WebSocket標準也是propopsed)。
  • 在Java世界中,Spring有能力說STOMP,它很容易實現。但是,可以通過添加第三方API來添加XMPP支持(即Smack