@nockdev/hsa 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard.html +24 -8
- package/package.json +1 -1
package/dashboard.html
CHANGED
|
@@ -1481,7 +1481,7 @@
|
|
|
1481
1481
|
STATE
|
|
1482
1482
|
================================================================ */
|
|
1483
1483
|
let endpoint =
|
|
1484
|
-
localStorage.getItem("hsa_endpoint") ||
|
|
1484
|
+
localStorage.getItem("hsa_endpoint") || window.location.origin;
|
|
1485
1485
|
let autoRefresh = true;
|
|
1486
1486
|
let refreshInterval = null;
|
|
1487
1487
|
let cacheHistory = [];
|
|
@@ -1493,6 +1493,7 @@
|
|
|
1493
1493
|
let sessionSSERetryMs = 1000;
|
|
1494
1494
|
let sessionSSERetryCount = 0;
|
|
1495
1495
|
const MAX_SSE_RETRIES = 5;
|
|
1496
|
+
let sseReconnectTimer = null;
|
|
1496
1497
|
let fetchErrorCount = 0;
|
|
1497
1498
|
const BASE_REFRESH_MS = 5000;
|
|
1498
1499
|
const MAX_REFRESH_MS = 30000;
|
|
@@ -1510,6 +1511,11 @@
|
|
|
1510
1511
|
setStatus("connecting");
|
|
1511
1512
|
fetchErrorCount = 0; // Reset error counter on manual connect
|
|
1512
1513
|
sessionSSERetryCount = 0; // Reset SSE retries so reconnect works
|
|
1514
|
+
sessionSSERetryMs = 1000; // Reset backoff delay
|
|
1515
|
+
if (sseReconnectTimer) {
|
|
1516
|
+
clearTimeout(sseReconnectTimer);
|
|
1517
|
+
sseReconnectTimer = null;
|
|
1518
|
+
}
|
|
1513
1519
|
fetchDashboard();
|
|
1514
1520
|
fetchSessions();
|
|
1515
1521
|
connectSessionSSE(); // Re-establish SSE stream
|
|
@@ -1557,8 +1563,11 @@
|
|
|
1557
1563
|
startRefresh();
|
|
1558
1564
|
}
|
|
1559
1565
|
function updateRefreshBadge(badge) {
|
|
1560
|
-
const ms = Math.min(
|
|
1561
|
-
|
|
1566
|
+
const ms = Math.min(
|
|
1567
|
+
BASE_REFRESH_MS * Math.pow(2, fetchErrorCount),
|
|
1568
|
+
MAX_REFRESH_MS,
|
|
1569
|
+
);
|
|
1570
|
+
badge.textContent = ms >= 1000 ? ms / 1000 + "s" : ms + "ms";
|
|
1562
1571
|
}
|
|
1563
1572
|
|
|
1564
1573
|
/* ================================================================
|
|
@@ -2156,7 +2165,10 @@
|
|
|
2156
2165
|
for (let i = 1; i < cacheHistory.length; i++) {
|
|
2157
2166
|
deltas.push({
|
|
2158
2167
|
hits: Math.max(0, cacheHistory[i].hits - cacheHistory[i - 1].hits),
|
|
2159
|
-
misses: Math.max(
|
|
2168
|
+
misses: Math.max(
|
|
2169
|
+
0,
|
|
2170
|
+
cacheHistory[i].misses - cacheHistory[i - 1].misses,
|
|
2171
|
+
),
|
|
2160
2172
|
});
|
|
2161
2173
|
}
|
|
2162
2174
|
const maxVal = Math.max(
|
|
@@ -2240,7 +2252,9 @@
|
|
|
2240
2252
|
|
|
2241
2253
|
function connectSessionSSE() {
|
|
2242
2254
|
if (sessionSSERetryCount >= MAX_SSE_RETRIES) {
|
|
2243
|
-
console.warn(
|
|
2255
|
+
console.warn(
|
|
2256
|
+
"SSE: Max retries reached, stopping session stream reconnect",
|
|
2257
|
+
);
|
|
2244
2258
|
return;
|
|
2245
2259
|
}
|
|
2246
2260
|
if (sessionSSE) {
|
|
@@ -2266,10 +2280,12 @@
|
|
|
2266
2280
|
sessionSSE.close();
|
|
2267
2281
|
sessionSSE = null;
|
|
2268
2282
|
sessionSSERetryCount++;
|
|
2269
|
-
|
|
2283
|
+
const delay = sessionSSERetryMs;
|
|
2284
|
+
sessionSSERetryMs = Math.min(sessionSSERetryMs * 2, 30000);
|
|
2285
|
+
sseReconnectTimer = setTimeout(() => {
|
|
2286
|
+
sseReconnectTimer = null;
|
|
2270
2287
|
connectSessionSSE();
|
|
2271
|
-
|
|
2272
|
-
}, sessionSSERetryMs);
|
|
2288
|
+
}, delay);
|
|
2273
2289
|
};
|
|
2274
2290
|
sessionSSE.onopen = () => {
|
|
2275
2291
|
sessionSSERetryMs = 1000;
|