Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.
¿Qué es STOMP?
STOMP es un protocolo de mensajería simple y basado en texto que proporciona un formato de cable interoperable para los brokers de mensajes. Define un pequeño conjunto de comandos (frames) para conectar, suscribirse, enviar y desconectar. Rhombus usa STOMP porque proporciona mensajería pub/sub estructurada sobre un transporte WebSocket estándar.Formato del frame
Cada frame STOMP sigue esta estructura:- COMMAND: Una sola palabra que identifica el tipo de frame (por ejemplo,
CONNECT,MESSAGE) - Headers: Cero o más pares
key:value, uno por línea - Línea vacía: Separa los headers del cuerpo
- Cuerpo: Carga útil opcional (típicamente JSON para frames MESSAGE)
- Byte nulo (
\x00): Termina cada frame
Ejemplo: frame CONNECT sin procesar
Frames del cliente al servidor
CONNECT
Inicia la sesión STOMP después de que la conexión WebSocket esté abierta.SUBSCRIBE
Se suscribe a un tópico de destino para recibir mensajes.El
id de la suscripción es definido por el cliente. Usa cualquier cadena única. Si creas múltiples suscripciones, cada una debe tener un id distinto.DISCONNECT
Indica una desconexión limpia e intencional.Frames del servidor al cliente
CONNECTED
Enviado por el servidor en respuesta a un CONNECT exitoso.MESSAGE
Entrega un evento desde un tópico suscrito.Heartbeats
Los heartbeats mantienen viva la conexión y detectan fallos. Se negocian durante el intercambio CONNECT/CONNECTED.Formato
Un heartbeat es un único carácter de salto de línea:\n.
Negociación
El headerheart-beat usa el formato cx,cy donde:
cx= intervalo mínimo (ms) al que el cliente puede enviar heartbeatscy= intervalo deseado (ms) al que el cliente quiere recibir heartbeats
10000,10000 (10 segundos en ambas direcciones).
Comportamiento
Implementación
Guía de análisis de frames
Algoritmo de análisis paso a paso
Casos especiales
Intercambio completo de frames
Aquí está la secuencia completa de frames para una sesión típica:Diferencias respecto al STOMP 1.2 completo
La implementación de Rhombus utiliza un subconjunto de STOMP 1.2. Diferencias notables:
Esto significa que no necesitas una librería completa de cliente STOMP. El subconjunto del protocolo es lo suficientemente simple como para implementarlo manualmente, como se muestra en los Ejemplos de código.