diff --git a/src/public/index.html b/src/public/index.html index 8a79ef3..aaf1642 100644 --- a/src/public/index.html +++ b/src/public/index.html @@ -540,8 +540,16 @@

EpisodeGuard { const d=document.getElementById('live-dot'); if(d)d.classList.remove('paused'); }; - sseSource.onerror = () => { const d=document.getElementById('live-dot'); if(d)d.classList.add('paused'); }; + sseSource.onopen = () => { + const d=document.getElementById('live-dot'); if(d)d.classList.remove('paused'); + const empty=document.getElementById('live-feed')?.querySelector('.live-empty'); + if(empty) empty.textContent='Connected. Waiting for new events...'; + }; + sseSource.onerror = () => { + const d=document.getElementById('live-dot'); if(d)d.classList.add('paused'); + const empty=document.getElementById('live-feed')?.querySelector('.live-empty'); + if(empty) empty.textContent='Disconnected. Reconnecting...'; + }; } function initLiveFeed() { diff --git a/src/routes/api.js b/src/routes/api.js index d2c4a20..38e20fb 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -67,6 +67,7 @@ router.get('/logs/stream', (req, res) => { res.setHeader('Content-Type', 'text/event-stream'); res.setHeader('Cache-Control', 'no-cache'); res.setHeader('Connection', 'keep-alive'); + res.setHeader('X-Accel-Buffering', 'no'); // stop nginx/proxy buffering so SSE streams immediately res.flushHeaders(); // Seed with events from the last 10 minutes only