Compare commits
1 Commits
main
...
fix/issue-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be4435e7cf |
@ -921,6 +921,7 @@ export async function monitorWebProvider(
|
|||||||
let heartbeat: NodeJS.Timeout | null = null;
|
let heartbeat: NodeJS.Timeout | null = null;
|
||||||
let watchdogTimer: NodeJS.Timeout | null = null;
|
let watchdogTimer: NodeJS.Timeout | null = null;
|
||||||
let lastMessageAt: number | null = null;
|
let lastMessageAt: number | null = null;
|
||||||
|
let connectionEstablishedAt: number | null = null;
|
||||||
let handledMessages = 0;
|
let handledMessages = 0;
|
||||||
let _lastInboundMsg: WebInboundMsg | null = null;
|
let _lastInboundMsg: WebInboundMsg | null = null;
|
||||||
|
|
||||||
@ -1388,7 +1389,8 @@ export async function monitorWebProvider(
|
|||||||
});
|
});
|
||||||
|
|
||||||
status.connected = true;
|
status.connected = true;
|
||||||
status.lastConnectedAt = Date.now();
|
connectionEstablishedAt = Date.now();
|
||||||
|
status.lastConnectedAt = connectionEstablishedAt;
|
||||||
status.lastEventAt = status.lastConnectedAt;
|
status.lastEventAt = status.lastConnectedAt;
|
||||||
status.lastError = null;
|
status.lastError = null;
|
||||||
emitStatus();
|
emitStatus();
|
||||||
@ -1448,33 +1450,39 @@ export async function monitorWebProvider(
|
|||||||
|
|
||||||
// Watchdog: Auto-restart if no messages received for MESSAGE_TIMEOUT_MS
|
// Watchdog: Auto-restart if no messages received for MESSAGE_TIMEOUT_MS
|
||||||
watchdogTimer = setInterval(() => {
|
watchdogTimer = setInterval(() => {
|
||||||
if (lastMessageAt) {
|
const lastActivityAt = Math.max(
|
||||||
const timeSinceLastMessage = Date.now() - lastMessageAt;
|
connectionEstablishedAt ?? 0,
|
||||||
if (timeSinceLastMessage > MESSAGE_TIMEOUT_MS) {
|
lastMessageAt ?? 0,
|
||||||
const minutesSinceLastMessage = Math.floor(
|
);
|
||||||
timeSinceLastMessage / 60000,
|
if (!lastActivityAt) return;
|
||||||
);
|
const timeSinceLastActivity = Date.now() - lastActivityAt;
|
||||||
heartbeatLogger.warn(
|
if (timeSinceLastActivity > MESSAGE_TIMEOUT_MS) {
|
||||||
{
|
const minutesSinceLastActivity = Math.floor(
|
||||||
connectionId,
|
timeSinceLastActivity / 60000,
|
||||||
minutesSinceLastMessage,
|
);
|
||||||
lastMessageAt: new Date(lastMessageAt),
|
heartbeatLogger.warn(
|
||||||
messagesHandled: handledMessages,
|
{
|
||||||
},
|
connectionId,
|
||||||
"Message timeout detected - forcing reconnect",
|
minutesSinceLastActivity,
|
||||||
);
|
connectionEstablishedAt: connectionEstablishedAt
|
||||||
whatsappHeartbeatLog.warn(
|
? new Date(connectionEstablishedAt)
|
||||||
`No messages received in ${minutesSinceLastMessage}m - restarting connection`,
|
: null,
|
||||||
);
|
lastMessageAt: lastMessageAt ? new Date(lastMessageAt) : null,
|
||||||
void closeListener().catch((err) => {
|
messagesHandled: handledMessages,
|
||||||
logVerbose(`Close listener failed: ${formatError(err)}`);
|
},
|
||||||
}); // Trigger reconnect
|
"Message timeout detected - forcing reconnect",
|
||||||
listener.signalClose?.({
|
);
|
||||||
status: 499,
|
whatsappHeartbeatLog.warn(
|
||||||
isLoggedOut: false,
|
`No messages received in ${minutesSinceLastActivity}m - restarting connection`,
|
||||||
error: "watchdog-timeout",
|
);
|
||||||
});
|
void closeListener().catch((err) => {
|
||||||
}
|
logVerbose(`Close listener failed: ${formatError(err)}`);
|
||||||
|
}); // Trigger reconnect
|
||||||
|
listener.signalClose?.({
|
||||||
|
status: 499,
|
||||||
|
isLoggedOut: false,
|
||||||
|
error: "watchdog-timeout",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}, WATCHDOG_CHECK_MS);
|
}, WATCHDOG_CHECK_MS);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user