feat(core): Implement inter-main communication for test webhooks in multi-main setup (#8267)

This commit is contained in:
Iván Ovejero
2024-01-12 11:48:58 +01:00
committed by GitHub
parent 135553bd6b
commit 1a0e285553
17 changed files with 231 additions and 96 deletions

View File

@@ -34,9 +34,7 @@ export class Push extends EventEmitter {
constructor() {
super();
if (useWebSockets) {
this.backend.on('message', (msg) => this.emit('message', msg));
}
if (useWebSockets) this.backend.on('message', (msg) => this.emit('message', msg));
}
handleRequest(req: SSEPushRequest | WebSocketPushRequest, res: PushResponse) {
@@ -44,6 +42,7 @@ export class Push extends EventEmitter {
userId,
query: { sessionId },
} = req;
if (req.ws) {
(this.backend as WebSocketPush).add(sessionId, userId, req.ws);
} else if (!useWebSockets) {
@@ -56,24 +55,24 @@ export class Push extends EventEmitter {
this.emit('editorUiConnected', sessionId);
}
broadcast<D>(type: IPushDataType, data?: D) {
this.backend.broadcast(type, data);
broadcast(type: IPushDataType, data?: unknown) {
this.backend.sendToAllSessions(type, data);
}
send<D>(type: IPushDataType, data: D, sessionId: string) {
this.backend.send(type, data, sessionId);
send(type: IPushDataType, data: unknown, sessionId: string) {
this.backend.sendToOneSession(type, data, sessionId);
}
getBackend() {
return this.backend;
}
sendToUsers<D>(type: IPushDataType, data: D, userIds: Array<User['id']>) {
sendToUsers(type: IPushDataType, data: unknown, userIds: Array<User['id']>) {
this.backend.sendToUsers(type, data, userIds);
}
@OnShutdown()
onShutdown(): void {
onShutdown() {
this.backend.closeAllConnections();
}
}