From f82f5470cd2ebddb466dca59011c4daf25dc3e68 Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Thu, 24 Mar 2022 13:25:23 +0530 Subject: [PATCH] feat: reset ping timeout on any frame recv Credit to @HUGEIT for suggesting this --- src/Socket/socket.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Socket/socket.ts b/src/Socket/socket.ts index a256ed8..8ca7b1f 100644 --- a/src/Socket/socket.ts +++ b/src/Socket/socket.ts @@ -259,6 +259,9 @@ export const makeSocket = ({ const onMessageRecieved = (data: Buffer) => { noise.decodeFrame(data, frame => { + // reset ping timeout + lastDateRecv = new Date() + ws.emit('frame', frame) // if it's a binary node if(!(frame instanceof Uint8Array)) { @@ -359,7 +362,7 @@ export const makeSocket = ({ end(new Boom('Connection was lost', { statusCode: DisconnectReason.connectionLost })) } else if(ws.readyState === ws.OPEN) { // if its all good, send a keep alive request - query( + sendNode( { tag: 'iq', attrs: { @@ -369,14 +372,11 @@ export const makeSocket = ({ xmlns: 'w:p', }, content: [{ tag: 'ping', attrs: { } }] - }, - keepAliveIntervalMs + } ) - .then(() => { - lastDateRecv = new Date() - logger.trace('recv keep alive') + .catch(err => { + logger.error({ trace: err.stack }, 'error in sending keep alive') }) - .catch(err => end(err)) } else { logger.warn('keep alive called when WS not open') }