TechLead
Principiante
20 min
Guía completa

Eventos Enviados por el Servidor (SSE)

Aprende SSE para actualizaciones en tiempo real unidireccionales con reconexión automática

¿Qué es SSE?

Server‑Sent Events permite que el servidor envíe actualizaciones al navegador mediante una conexión HTTP persistente. Es ideal para feeds, dashboards y notificaciones.

Cliente con EventSource

const source = new EventSource('/api/stream');

source.onmessage = (event) => {
  const data = JSON.parse(event.data);
  renderUpdate(data);
};

source.onerror = () => {
  console.log('Reconectando...');
};

Servidor con Express

app.get('/api/stream', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');

  const send = (data) => {
    res.write('data: ' + JSON.stringify(data) + '\n\n');
  };

  const timer = setInterval(() => send({ time: Date.now() }), 1000);

  req.on('close', () => clearInterval(timer));
});

IDs y reconexión

SSE soporta Last-Event-ID para reanudar el stream y evitar pérdida de eventos tras desconexiones.

// server side
res.write('id: 42\n');
res.write('data: {"message":"hola"}\n\n');

⚠️ Limitaciones

  • • Solo servidor → cliente (no bidireccional)
  • • Solo texto (no binario)
  • • Límites de conexiones por dominio

💡 Cuándo usar SSE

  • ✓ Notificaciones y feeds
  • ✓ Paneles de métricas
  • ✓ Actualizaciones periódicas simples