minor fixes

This commit is contained in:
fishtank-dashboard
2026-03-17 15:15:30 -07:00
committed by GitHub
parent 2f50144fe7
commit 1c63a3c95f
2 changed files with 196 additions and 5 deletions

View File

@@ -89,6 +89,22 @@ function sendSubscriptions() {
sendBinary(buildSubscribeFrame('presence'));
}
// Presence is client-driven — must re-request every 30s to get updated counts
let presenceTimer = null;
function startPresencePolling() {
if (presenceTimer) clearInterval(presenceTimer);
presenceTimer = setInterval(() => {
if (ftSocket && ftSocket.readyState === 1) {
sendBinary(buildSubscribeFrame('presence'));
}
}, 30000);
}
function stopPresencePolling() {
if (presenceTimer) { clearInterval(presenceTimer); presenceTimer = null; }
}
// ── Simple msgpack decoder (enough for fishtank events) ─────
function mpDecode(buf, offset = 0) {
if (offset >= buf.length) return [null, offset];
@@ -205,6 +221,7 @@ function handleBinaryFrame(buf) {
namespaceReady = true;
broadcast({ _ft: 'ws_status', status: 'connected' });
sendSubscriptions();
startPresencePolling();
return;
}
@@ -286,6 +303,7 @@ function connectFishtankWS(token) {
console.log(`[WS] Disconnected (${code} ${reason || ''}). Reconnecting in 5s...`);
broadcast({ _ft: 'ws_status', status: 'disconnected' });
namespaceReady = false;
stopPresencePolling();
reconnectTimer = setTimeout(() => connectFishtankWS(null), 5000);
});