1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-07-06 22:19:50 +00:00

Receivers: Change sessionMap to map type

This commit is contained in:
Michael Hollister 2025-04-29 14:36:16 -05:00
parent 5782fcc3ca
commit 65edb0d40e
2 changed files with 12 additions and 10 deletions

View file

@ -10,7 +10,7 @@ export class TcpListenerService {
private server: net.Server; private server: net.Server;
private sessions: FCastSession[] = []; private sessions: FCastSession[] = [];
private sessionMap = {}; private sessionMap = new Map();
start() { start() {
if (this.server != null) { if (this.server != null) {
@ -47,11 +47,12 @@ export class TcpListenerService {
} }
disconnect(sessionId: string) { disconnect(sessionId: string) {
this.sessionMap[sessionId]?.socket.destroy(); this.sessionMap.get(sessionId)?.socket.destroy();
this.sessionMap.delete(sessionId);
} }
public getSessions(): string[] { public getSessions(): string[] {
return Object.keys(this.sessionMap); return [...this.sessionMap.keys()];
} }
private async handleServerError(err: NodeJS.ErrnoException) { private async handleServerError(err: NodeJS.ErrnoException) {
@ -64,11 +65,11 @@ export class TcpListenerService {
const session = new FCastSession(socket, (data) => socket.write(data)); const session = new FCastSession(socket, (data) => socket.write(data));
session.bindEvents(this.emitter); session.bindEvents(this.emitter);
this.sessions.push(session); this.sessions.push(session);
this.sessionMap[session.sessionId] = session; this.sessionMap.set(session.sessionId, session);
socket.on("error", (err) => { socket.on("error", (err) => {
Main.logger.warn(`Error from ${socket.remoteAddress}:${socket.remotePort}.`, err); Main.logger.warn(`Error from ${socket.remoteAddress}:${socket.remotePort}.`, err);
socket.destroy(); this.disconnect(session.sessionId);
}); });
socket.on("data", buffer => { socket.on("data", buffer => {

View file

@ -11,7 +11,7 @@ export class WebSocketListenerService {
private server: WebSocketServer; private server: WebSocketServer;
private sessions: FCastSession[] = []; private sessions: FCastSession[] = [];
private sessionMap = {}; private sessionMap = new Map();
start() { start() {
if (this.server != null) { if (this.server != null) {
@ -46,11 +46,12 @@ export class WebSocketListenerService {
} }
disconnect(sessionId: string) { disconnect(sessionId: string) {
this.sessionMap[sessionId]?.close(); this.sessionMap.get(sessionId)?.close();
this.sessionMap.delete(sessionId);
} }
public getSessions(): string[] { public getSessions(): string[] {
return Object.keys(this.sessionMap); return [...this.sessionMap.keys()];
} }
private async handleServerError(err: NodeJS.ErrnoException) { private async handleServerError(err: NodeJS.ErrnoException) {
@ -63,11 +64,11 @@ export class WebSocketListenerService {
const session = new FCastSession(socket, (data) => socket.send(data)); const session = new FCastSession(socket, (data) => socket.send(data));
session.bindEvents(this.emitter); session.bindEvents(this.emitter);
this.sessions.push(session); this.sessions.push(session);
this.sessionMap[session.sessionId] = session; this.sessionMap.set(session.sessionId, session);
socket.on("error", (err) => { socket.on("error", (err) => {
Main.logger.warn(`Error.`, err); Main.logger.warn(`Error.`, err);
session.close(); this.disconnect(session.sessionId);
}); });
socket.on('message', data => { socket.on('message', data => {