diff --git a/src/adapters/web-socket-adapter.ts b/src/adapters/web-socket-adapter.ts index 5930220..8741842 100644 --- a/src/adapters/web-socket-adapter.ts +++ b/src/adapters/web-socket-adapter.ts @@ -60,6 +60,10 @@ export class WebSocketAdapter extends EventEmitter implements IWebSocketAdapter public onBroadcast(event: Event): void { this.webSocketServer.emit(WebSocketServerAdapterEvent.Broadcast, event) + process.send({ + eventName: WebSocketServerAdapterEvent.Broadcast, + event, + }) } public onSendEvent(event: Event): void { diff --git a/src/index.ts b/src/index.ts index 910d795..82440c7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -45,6 +45,16 @@ if (cluster.isPrimary) { process.exit(0) } + cluster.on('message', (source, message) => { + for (const worker of Object.values(cluster.workers)) { + if (source.id === worker.id) { + continue + } + + worker.send(message) + } + }) + process.on('SIGINT', exitHandler) process.on('uncaughtException', exitHandler) } else if (cluster.isWorker) { @@ -76,5 +86,9 @@ if (cluster.isPrimary) { process.on('SIGINT', exitHandler) process.on('uncaughtException', exitHandler) + process.on('message', (message: { eventName: string, event: unknown }) => { + adapter.emit(message.eventName, message.event) + }) + console.log(`worker ${process.pid} - listening on port ${port}`) }