websockets que protocol websocket stomp

protocol - websocket que es



¿Cuál es la diferencia entre los protocolos WebSocket y STOMP? (3)

¿Cuáles son las principales diferencias entre los protocolos WebSocket y STOMP?


Esta pregunta es similar a hacer la diferencia entre TCP y HTTP. Aún trataré de abordar su pregunta, es natural que se confunda entre estos dos términos si está comenzando.

Respuesta corta

STOMP se deriva de WebSockets. STOMP solo menciona algunas formas específicas de cómo los marcos de mensajes se intercambian entre el cliente y el servidor utilizando WebSockets.

Respuesta larga

Websockets

Es una especificación para permitir la comunicación bidireccional síncrona entre un cliente y un servidor. Aunque es similar a los sockets TCP, es un protocolo que funciona como una conexión HTTP actualizada, que intercambia marcos de longitud variable entre las dos partes, en lugar de una secuencia.

PISAR MUY FUERTE

Define un protocolo para que los clientes y servidores se comuniquen con la semántica de la mensajería. No define ningún detalle de implementación, sino que aborda un protocolo por cable fácil de implementar para las integraciones de mensajería. Proporciona una semántica superior sobre el protocolo WebSockets y define un puñado de tipos de marcos que se asignan a los marcos de WebSockets. Algunos de estos tipos son ...

  • conectar
  • suscribir
  • darse de baja
  • enviar (mensajes enviados al servidor)
  • mensaje (para mensajes enviados desde el servidor) BEGIN, COMMIT, ROLLBACK (gestión de transacciones)

La API de WebSocket permite que las aplicaciones web manejen las comunicaciones bidireccionales, mientras que STOMP es un protocolo de mensajería simple orientado al texto.

El protocolo STOMP se usa comúnmente dentro de un socket web cuando una aplicación web necesita ser compatible con la comunicación bidireccional con un servidor web.

Un buen tutorial es STOMP Over WebSocket por Jeff Mesnill (2012)

STOMP también se puede utilizar sin un socket web, por ejemplo, a través de una conexión Telnet o un servicio de corretaje de mensajes.

Y Raw WebSockets se puede usar sin STOMP - Ej. Ejemplo de Spring Boot + WebSocket sin STOMP y SockJs .


WebSocket implica una arquitectura de mensajería, pero no exige el uso de ningún protocolo de mensajería específico. Es una capa muy delgada sobre TCP que transforma un flujo de bytes en un flujo de mensajes (ya sea de texto o binario) y no mucho más. Depende de las aplicaciones interpretar el significado de un mensaje.

A diferencia de HTTP, que es un protocolo de nivel de aplicación, en el protocolo WebSocket simplemente no hay suficiente información en un mensaje entrante para que un marco o contenedor sepa cómo enrutarlo o procesarlo. Por lo tanto, WebSocket es posiblemente un nivel demasiado bajo para cualquier cosa que no sea una aplicación muy trivial. Se puede hacer, pero es probable que conduzca a la creación de un marco en la parte superior. Esto es comparable a cómo la mayoría de las aplicaciones web de hoy en día se escriben utilizando un marco web en lugar de la API de Servlet solo.

Por esta razón, el WebSocket RFC define el uso de sub-protocolos. Durante el protocolo de enlace, el cliente y el servidor pueden usar el encabezado Sec-WebSocket-Protocol para acordar un subprotocolo, es decir, un protocolo superior de nivel de aplicación para usar. No se requiere el uso de un subprotocolo, pero incluso si no se usa, las aplicaciones deberán elegir un formato de mensaje que el cliente y el servidor puedan entender. Ese formato puede ser personalizado, específico del marco o un protocolo estándar de mensajería.

STOMP: un protocolo de mensajería simple creado originalmente para su uso en lenguajes de scripting con marcos inspirados en HTTP. STOMP es ampliamente compatible y está bien adaptado para su uso en WebSocket y en la web.