From 6fc239a600283be434d56ab09061fe6f5fd9fc3c Mon Sep 17 00:00:00 2001 From: Simon Cordt Date: Wed, 24 Sep 2025 10:25:56 +0200 Subject: [PATCH] Fix: Implement fallback polling mechanism for Persistent Queue updates when WebSocket connection is unavailable --- web/pqueue.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/web/pqueue.js b/web/pqueue.js index 12b5968..fee73a5 100644 --- a/web/pqueue.js +++ b/web/pqueue.js @@ -24,6 +24,10 @@ selectedPending: new Set(), }; + // Polling control (fallback only) + let _pqueuePollIntervalId = null; + let _pqueueFocusListener = null; + const Progress = { computeAggregateProgress(nodes) { let totalMax = 0; @@ -556,9 +560,25 @@ } } + function stopFallbackPolling() { + try { + if (_pqueuePollIntervalId) { + clearInterval(_pqueuePollIntervalId); + _pqueuePollIntervalId = null; + } + if (_pqueueFocusListener) { + window.removeEventListener('focus', _pqueueFocusListener); + _pqueueFocusListener = null; + } + } catch (e) { /* noop */ } + } + function setupFallbackPolling() { - window.addEventListener('focus', refresh); - setInterval(refresh, 3000); + // Only used when WebSocket API is unavailable + stopFallbackPolling(); + _pqueueFocusListener = () => refresh(); + window.addEventListener('focus', _pqueueFocusListener); + _pqueuePollIntervalId = setInterval(refresh, 3000); } function initialize() {