1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-06-24 21:25:23 +00:00

Receivers: Add support for sending session messages to specific sessions

This commit is contained in:
Michael Hollister 2025-05-01 14:34:38 -05:00
parent 2776bc398e
commit 18b50d2d38
3 changed files with 32 additions and 11 deletions

View file

@ -48,7 +48,7 @@ export class ConnectionMonitor {
} }
ConnectionMonitor.logger.debug(`Pinging session ${sessionId} with ${ConnectionMonitor.heartbeatRetries.get(sessionId)} retries left`); 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); ConnectionMonitor.heartbeatRetries.set(sessionId, ConnectionMonitor.heartbeatRetries.get(sessionId) === undefined ? 1 : ConnectionMonitor.heartbeatRetries.get(sessionId) + 1);
} }
} }

View file

@ -36,16 +36,27 @@ export class TcpListenerService {
server.close(); server.close();
} }
send(opcode: number, message = null) { send(opcode: number, message = null, sessionId = null) {
// logger.info(`Sending message ${JSON.stringify(message)}`); // logger.info(`Sending message ${JSON.stringify(message)}`);
this.sessions.forEach(session => {
if (sessionId) {
try { try {
session.send(opcode, message); this.sessionMap.get(sessionId)?.send(opcode, message);
} catch (e) { } catch (e) {
logger.warn("Failed to send error.", 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) { disconnect(sessionId: string) {

View file

@ -36,15 +36,25 @@ export class WebSocketListenerService {
server.close(); server.close();
} }
send(opcode: number, message = null) { send(opcode: number, message = null, sessionId = null) {
this.sessions.forEach(session => { if (sessionId) {
try { try {
session.send(opcode, message); this.sessionMap.get(sessionId)?.send(opcode, message);
} catch (e) { } catch (e) {
logger.warn("Failed to send error.", 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) { disconnect(sessionId: string) {