From caf3e886a7c17805680c1ae8a186b388f6d367ea Mon Sep 17 00:00:00 2001 From: josedario87 Date: Mon, 9 Jun 2025 18:01:46 -0600 Subject: [PATCH] seguimos intentado hacer funcionar el realtime --- api/sse/index.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/api/sse/index.js b/api/sse/index.js index 1c68c9e..d346647 100644 --- a/api/sse/index.js +++ b/api/sse/index.js @@ -7,23 +7,30 @@ export function registerSse(app) { res.set({ 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', - 'Connection': 'keep-alive' + Connection: 'keep-alive' }); - res.flushHeaders(); - res.write('event: connected\ndata: {}\n\n'); // ← mantiene el stream vivo + + // Primer “hola” + res.write('event: connected\ndata: {}\n\n'); + + // 🔴 Mantén viva la conexión con pings cada 15 s + const keepAlive = setInterval(() => { + res.write(':\n\n'); // comentario SSE = ping + }, 15000); sseClients.push(res); - console.log(`🟢 Cliente SSE conectado (${sseClients.length})`); + console.log('🟢 Cliente SSE conectado (%d)', sseClients.length); req.on('close', () => { - const idx = sseClients.indexOf(res); - if (idx !== -1) sseClients.splice(idx, 1); - console.log(`🔌 Cliente SSE desconectado (${sseClients.length})`); + clearInterval(keepAlive); // limpia el intervalo + sseClients.splice(sseClients.indexOf(res), 1); + console.log('🔌 Cliente SSE desconectado (%d)', sseClients.length); }); }); + const broadcast = (data) => { const payload = `data: ${data}\n\n`; sseClients.forEach((client) => client.write(payload));