STOMP или XMPP - над websocket

Я работаю над проектом, который включает чат в режиме реального времени (обмен сообщениями, включая групповые чаты).

Я работал с websockets раньше, поэтому начал работать над этим с помощью spring -websockets, и я кое-что прочитал о том, что является лучшим способом его реализации. Затем я столкнулся с STOMP (как суб-протокол для веб-карт), и поскольку есть прямая поддержка STOMP в spring, было бы легко достичь того, что я должен был делать.

Но я сомневаюсь, насколько я понимаю, что STOMP и XMPP - это аналогичные протоколы (протоколы обмена сообщениями), но я не мог найти никаких вопросов/блогов, где объясняются различия и почему кто-то предпочтет один за другим?

Будет действительно полезно, если кто-нибудь объяснит, как эти два протокола отличаются?

Спасибо.

Ответы

Ответ 1

Как преемник Jabber, XMPP больше ориентируется на обмен мгновенными сообщениями вместо STOMP. XMPP является расширяемым протоколом и может использоваться для других целей, но существует множество встроенных механизмов и реализаций, касающихся IM. STOMP предлагает более общий механизм, и "сообщение" здесь относится к широкому значению.

Предположим, вы выбрали STOMP для своего проекта. Тогда вам, вероятно, потребуется определить основные сообщения для определенных сценариев (одноранговый, групповой чат), которые уже предлагаются XMPP.

Чтобы сравнить два протокола:

  • Сообщение STOMP переносится как обычный текст (как указывает его имя), тогда как XMPP структурирован как XML.
  • Соединения STOMP могут быть установлены через TCP или WebSockets. XMPP поддерживает TCP или HTTP (стандарт WebSocket также propopsed).
  • В мире Java Spring имеет возможность разговаривать с STOMP и его очень легко реализовать. Тем не менее, поддержка XMPP может быть добавлена ​​путем добавления сторонних API (т.е. Smack)