enablewebsocketmessagebroker baeldung spring xmpp stomp spring-websocket

baeldung - spring boot websocket security



STOMP o XMPP-Sobre websocket (1)

Estoy trabajando en un proyecto que involucra chat en tiempo real (mensajes, incluyendo chats grupales).

He trabajado con websockets antes, así que empecé a trabajar con spring-websockets e hice algunas lecturas sobre cuál es la mejor manera de implementarlo. Luego me topé con STOMP (como un subprotocolo para websockets) y como en la primavera hay soporte directo para STOMP, fue un poco fácil lograr lo que se suponía que debía hacer.

Pero mi duda es, en la medida en que entiendo que STOMP y XMPP son protocolos similares (protocolos de mensajería), pero no pude encontrar ninguna pregunta / blog donde se expliquen las diferencias y ¿por qué alguien preferiría uno sobre otro?

¿Será realmente útil si alguien explica cómo difieren estos dos protocolos?

Gracias.


Como sucesor de Jabber, XMPP está más centrado en la mensajería instantánea en lugar de STOMP. XMPP es un protocolo extensible y podría usarse para otros propósitos, pero hay muchos mecanismos integrados e implementaciones con respecto a la mensajería instantánea. STOMP ofrece un mecanismo más general y el "mensaje" aquí refiere un significado amplio.

Digamos que eliges STOMP para tu proyecto. Entonces probablemente necesitará definir mensajes básicos para ciertos escenarios (peer-to-peer, chat grupal) que ya ofrece XMPP.

Para comparar dos protocolos;

  • El mensaje STOMP se transmite como texto sin formato (como su nombre lo indica), mientras que XMPP está estructurado como XML.
  • Las conexiones STOMP se pueden establecer a través de TCP o WebSockets. XMPP es compatible con TCP o HTTP (el estándar WebSocket también se propopsed ).
  • En el mundo Java, Spring tiene la capacidad de hablar STOMP y es muy fácil de implementar. Sin embargo, la compatibilidad con XMPP se puede agregar agregando API de terceros (es decir, Smack )