diff --git a/src/gateway/server/ws-connection.ts b/src/gateway/server/ws-connection.ts index 0a2dfaa212e..95a0bf9ffa3 100644 --- a/src/gateway/server/ws-connection.ts +++ b/src/gateway/server/ws-connection.ts @@ -267,16 +267,7 @@ export function attachGatewayWsConnectionHandler(params: AttachGatewayWsConnecti payload: { nonce: connectNonce, ts: Date.now() }, }); - const pingTimer = setInterval(() => { - if (!client) { - return; - } - try { - socket.ping(); - } catch { - // close() clears the timer; ping can race with a socket already entering CLOSING. - } - }, 25_000); + let pingTimer: ReturnType | undefined; const close = (code = 1000, reason?: string) => { if (closed) { @@ -284,7 +275,9 @@ export function attachGatewayWsConnectionHandler(params: AttachGatewayWsConnecti } closed = true; clearTimeout(handshakeTimer); - clearInterval(pingTimer); + if (pingTimer !== undefined) { + clearInterval(pingTimer); + } releasePreauthBudget(); if (client) { clients.delete(client); @@ -435,6 +428,13 @@ export function attachGatewayWsConnectionHandler(params: AttachGatewayWsConnecti releasePreauthBudget(); client = next; clients.add(next); + pingTimer = setInterval(() => { + try { + socket.ping(); + } catch { + // close() clears the timer; ping can race with a socket already entering CLOSING. + } + }, 25_000); return true; }, setHandshakeState: (next) => {