Saltar al contenido principal

Server-Sent Events (SSE)

TinyMQ soporta Server-Sent Events (SSE) para streaming de mensajes en tiempo real unidireccional.

Esto es especialmente útil para construir dashboards web o para hacer live-tailing de logs directamente en el navegador, sin la complejidad de los WebSockets.

El endpoint /stream/{topic}

Endpoint: GET /stream/{topic}

Al conectarte a este endpoint, TinyMQ actualiza la petición a text/event-stream y mantiene la conexión abierta (Connection: keep-alive).

Parámetros de consulta

ParámetroTipoPor defectoDescripción
filter_keystring(vacío)Smart Routing: Solo devuelve mensajes con esta clave JSON exacta
filter_valstring(vacío)Smart Routing: Valor a coincidir con filter_key

Al igual que con WebSockets, las conexiones SSE operan en Spy Mode. Son no destructivas y reciben una copia de cada mensaje publicado en el topic sin eliminarlo del WAL real.

Ejemplo: JavaScript en el navegador

Como SSE es un estándar web nativo, puedes consumirlo directamente usando la API integrada EventSource en cualquier navegador moderno:

const evtSource = new EventSource("http://localhost:7800/stream/my_topic");

evtSource.onmessage = function(event) {
const msg = JSON.parse(event.data);
console.log("New message:", msg.payload_text);
};

evtSource.onerror = function(err) {
console.error("Stream error:", err);
};

Ejemplo: cURL

Puedes usar cURL para hacer live-tail de un topic desde la terminal:

curl -N -H "Accept: text/event-stream" http://localhost:7800/stream/my_topic

Salida:

data: {"id":"uuid...","topic":"my_topic","payload":"...","payload_text":"Hello"}

data: {"id":"uuid...","topic":"my_topic","payload":"...","payload_text":"World"}

El comando tmq tail

El CLI oficial incluye un comando tail que envuelve el endpoint SSE y añade lógica de reconexión automática:

tmq tail my_topic