fix(ipc): Propagate per-client disconnects, add proper routing for targeted messages, and remove unused node-ipc deps
This commit is contained in:
@@ -128,6 +128,13 @@ export class IpcChannel<TRequest = any, TResponse = any> extends plugins.EventEm
|
||||
this.handleMessage(message);
|
||||
});
|
||||
|
||||
// Forward per-client disconnects from transports that support multi-client servers
|
||||
// We re-emit a 'clientDisconnected' event with the clientId if known so higher layers can act.
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
(this.transport as any).on?.('clientDisconnected', (_socket: any, clientId?: string) => {
|
||||
this.emit('clientDisconnected', clientId);
|
||||
});
|
||||
|
||||
this.transport.on('drain', () => {
|
||||
this.emit('drain');
|
||||
});
|
||||
@@ -461,7 +468,7 @@ export class IpcChannel<TRequest = any, TResponse = any> extends plugins.EventEm
|
||||
* Register a message handler
|
||||
*/
|
||||
public on(event: string, handler: (payload: any) => any | Promise<any>): this {
|
||||
if (event === 'message' || event === 'connect' || event === 'disconnect' || event === 'error' || event === 'reconnecting' || event === 'drain' || event === 'heartbeatTimeout') {
|
||||
if (event === 'message' || event === 'connect' || event === 'disconnect' || event === 'error' || event === 'reconnecting' || event === 'drain' || event === 'heartbeatTimeout' || event === 'clientDisconnected') {
|
||||
// Special handling for channel events
|
||||
super.on(event, handler);
|
||||
} else {
|
||||
@@ -522,4 +529,4 @@ export class IpcChannel<TRequest = any, TResponse = any> extends plugins.EventEm
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user