This commit is contained in:
legop3
2026-04-29 14:22:44 -04:00
parent b716e40f53
commit 2e140d1bd5
2 changed files with 23 additions and 5 deletions
@@ -30,6 +30,7 @@ function registerRoverSnapshotSocketGateway({
const socketSubscriptions = new Map();
const subscribeBuckets = new Map();
const lastSentBySocket = new Map();
const sentCounts = new Map();
function addSubscription(socket, roverId) {
if (!roverSubscribers.has(roverId)) roverSubscribers.set(roverId, new Set());
@@ -89,6 +90,12 @@ function registerRoverSnapshotSocketGateway({
const now = ts || Date.now();
if (now - lastSent < STREAM_INTERVAL_MS) return;
lastMap.set(id, now);
const key = `${socketId}:${id}`;
const sentCount = (sentCounts.get(key) || 0) + 1;
sentCounts.set(key, sentCount);
if (sentCount === 1 || sentCount % 30 === 0) {
logger.warn('Snapshot frame sent', { socketId, roverId: id, sentCount, ts, bytes: buffer.length });
}
sendFrame(socket, id, { ts }, buffer);
});
});
@@ -126,11 +133,13 @@ function registerRoverSnapshotSocketGateway({
subscribedIds: validIds,
});
validIds.forEach((roverId) => addSubscription(socket, roverId));
validIds.forEach((roverId) => {
validIds.forEach(async (roverId) => {
if (typeof fetchSnapshotNow === 'function') {
fetchSnapshotNow(String(roverId)).catch((err) => {
try {
await fetchSnapshotNow(String(roverId), { force: true });
} catch (err) {
logger.warn('Immediate snapshot fetch failed', { roverId, err: err.message });
});
}
}
const state = getRoverSnapshotState(roverId);
if (state?.frame) sendFrame(socket, roverId, { ts: state.ts }, state.frame);