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:
parent
2776bc398e
commit
18b50d2d38
3 changed files with 32 additions and 11 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue