diff --git a/receivers/common/web/ConnectionMonitor.ts b/receivers/common/web/ConnectionMonitor.ts index 3732b9e..20c9b6c 100644 --- a/receivers/common/web/ConnectionMonitor.ts +++ b/receivers/common/web/ConnectionMonitor.ts @@ -48,7 +48,7 @@ export class ConnectionMonitor { } ConnectionMonitor.logger.debug(`Pinging session ${sessionId} with ${ConnectionMonitor.heartbeatRetries.get(sessionId)} retries left`); - ConnectionMonitor.backendConnections.get(sessionId).send(Opcode.Ping, null); + ConnectionMonitor.backendConnections.get(sessionId).send(Opcode.Ping, null, sessionId); ConnectionMonitor.heartbeatRetries.set(sessionId, ConnectionMonitor.heartbeatRetries.get(sessionId) === undefined ? 1 : ConnectionMonitor.heartbeatRetries.get(sessionId) + 1); } } diff --git a/receivers/common/web/TcpListenerService.ts b/receivers/common/web/TcpListenerService.ts index 064985b..1c0e32d 100644 --- a/receivers/common/web/TcpListenerService.ts +++ b/receivers/common/web/TcpListenerService.ts @@ -36,16 +36,27 @@ export class TcpListenerService { server.close(); } - send(opcode: number, message = null) { + send(opcode: number, message = null, sessionId = null) { // logger.info(`Sending message ${JSON.stringify(message)}`); - this.sessions.forEach(session => { + + if (sessionId) { try { - session.send(opcode, message); + this.sessionMap.get(sessionId)?.send(opcode, message); } catch (e) { logger.warn("Failed to send error.", e); - session.close(); + this.sessionMap.get(sessionId)?.close(); } - }); + } + else { + this.sessions.forEach(session => { + try { + session.send(opcode, message); + } catch (e) { + logger.warn("Failed to send error.", e); + session.close(); + } + }); + } } disconnect(sessionId: string) { diff --git a/receivers/common/web/WebSocketListenerService.ts b/receivers/common/web/WebSocketListenerService.ts index c8913ed..60f0d2c 100644 --- a/receivers/common/web/WebSocketListenerService.ts +++ b/receivers/common/web/WebSocketListenerService.ts @@ -36,15 +36,25 @@ export class WebSocketListenerService { server.close(); } - send(opcode: number, message = null) { - this.sessions.forEach(session => { + send(opcode: number, message = null, sessionId = null) { + if (sessionId) { try { - session.send(opcode, message); + this.sessionMap.get(sessionId)?.send(opcode, message); } catch (e) { logger.warn("Failed to send error.", e); - session.close(); + this.sessionMap.get(sessionId)?.close(); } - }); + } + else { + this.sessions.forEach(session => { + try { + session.send(opcode, message); + } catch (e) { + logger.warn("Failed to send error.", e); + session.close(); + } + }); + } } disconnect(sessionId: string) {