From 65edb0d40e5fda993813a996d2559393d3cfa43b Mon Sep 17 00:00:00 2001 From: Michael Hollister Date: Tue, 29 Apr 2025 14:36:16 -0500 Subject: [PATCH] Receivers: Change sessionMap to map type --- receivers/common/web/TcpListenerService.ts | 11 ++++++----- receivers/common/web/WebSocketListenerService.ts | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/receivers/common/web/TcpListenerService.ts b/receivers/common/web/TcpListenerService.ts index af8c357..bf0475d 100644 --- a/receivers/common/web/TcpListenerService.ts +++ b/receivers/common/web/TcpListenerService.ts @@ -10,7 +10,7 @@ export class TcpListenerService { private server: net.Server; private sessions: FCastSession[] = []; - private sessionMap = {}; + private sessionMap = new Map(); start() { if (this.server != null) { @@ -47,11 +47,12 @@ export class TcpListenerService { } disconnect(sessionId: string) { - this.sessionMap[sessionId]?.socket.destroy(); + this.sessionMap.get(sessionId)?.socket.destroy(); + this.sessionMap.delete(sessionId); } public getSessions(): string[] { - return Object.keys(this.sessionMap); + return [...this.sessionMap.keys()]; } private async handleServerError(err: NodeJS.ErrnoException) { @@ -64,11 +65,11 @@ export class TcpListenerService { const session = new FCastSession(socket, (data) => socket.write(data)); session.bindEvents(this.emitter); this.sessions.push(session); - this.sessionMap[session.sessionId] = session; + this.sessionMap.set(session.sessionId, session); socket.on("error", (err) => { Main.logger.warn(`Error from ${socket.remoteAddress}:${socket.remotePort}.`, err); - socket.destroy(); + this.disconnect(session.sessionId); }); socket.on("data", buffer => { diff --git a/receivers/common/web/WebSocketListenerService.ts b/receivers/common/web/WebSocketListenerService.ts index a43a630..49ea7dc 100644 --- a/receivers/common/web/WebSocketListenerService.ts +++ b/receivers/common/web/WebSocketListenerService.ts @@ -11,7 +11,7 @@ export class WebSocketListenerService { private server: WebSocketServer; private sessions: FCastSession[] = []; - private sessionMap = {}; + private sessionMap = new Map(); start() { if (this.server != null) { @@ -46,11 +46,12 @@ export class WebSocketListenerService { } disconnect(sessionId: string) { - this.sessionMap[sessionId]?.close(); + this.sessionMap.get(sessionId)?.close(); + this.sessionMap.delete(sessionId); } public getSessions(): string[] { - return Object.keys(this.sessionMap); + return [...this.sessionMap.keys()]; } private async handleServerError(err: NodeJS.ErrnoException) { @@ -63,11 +64,11 @@ export class WebSocketListenerService { const session = new FCastSession(socket, (data) => socket.send(data)); session.bindEvents(this.emitter); this.sessions.push(session); - this.sessionMap[session.sessionId] = session; + this.sessionMap.set(session.sessionId, session); socket.on("error", (err) => { Main.logger.warn(`Error.`, err); - session.close(); + this.disconnect(session.sessionId); }); socket.on('message', data => {