mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-14 18:43:31 +01:00
feat(ws): support for custom worker messaging (#10241)
This commit is contained in:
@@ -66,6 +66,10 @@ export interface WorkerShardingStrategyOptions {
|
||||
* Dictates how many shards should be spawned per worker thread.
|
||||
*/
|
||||
shardsPerWorker: number | 'all';
|
||||
/**
|
||||
* Handles a payload not recognized by the handler.
|
||||
*/
|
||||
unknownPayloadHandler?(payload: any): unknown;
|
||||
/**
|
||||
* Path to the worker file to use. The worker requires quite a bit of setup, it is recommended you leverage the {@link WorkerBootstrapper} class.
|
||||
*/
|
||||
@@ -225,7 +229,13 @@ export class WorkerShardingStrategy implements IShardingStrategy {
|
||||
.on('messageerror', (err) => {
|
||||
throw err;
|
||||
})
|
||||
.on('message', async (payload: WorkerReceivePayload) => this.onMessage(worker, payload));
|
||||
.on('message', async (payload: any) => {
|
||||
if ('op' in payload) {
|
||||
await this.onMessage(worker, payload);
|
||||
} else {
|
||||
await this.options.unknownPayloadHandler?.(payload);
|
||||
}
|
||||
});
|
||||
|
||||
this.#workers.push(worker);
|
||||
for (const shardId of workerData.shardIds) {
|
||||
@@ -347,6 +357,11 @@ export class WorkerShardingStrategy implements IShardingStrategy {
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
await this.options.unknownPayloadHandler?.(payload);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user