Skip to main content
Esta página fue traducida automáticamente. Si encuentra errores o tiene sugerencias, contáctenos.
Rhombus utiliza STOMP 1.2 (Streaming Text Oriented Messaging Protocol) sobre WebSocket para la entrega de eventos en tiempo real. Esta página es una referencia del protocolo para desarrolladores que necesitan entender o implementar el framing de STOMP a bajo nivel.

¿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.
No se requieren headers ni cuerpo. Después de enviar DISCONNECT, cierra la conexión WebSocket subyacente.

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.
El cuerpo siempre es un objeto JSON que contiene la carga útil del evento.

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:
Sin comando, sin headers, sin terminador nulo. Solo \n.

Negociación

El header heart-beat usa el formato cx,cy donde:
  • cx = intervalo mínimo (ms) al que el cliente puede enviar heartbeats
  • cy = intervalo deseado (ms) al que el cliente quiere recibir heartbeats
El servidor de Rhombus usa 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.
Última modificación el 8 de julio de 2026