- protected createWorker (): ThreadWorkerWithMessageChannel {
- return new Worker(this.filePath, {
- env: SHARE_ENV
- })
- }
-
- /** @inheritDoc */
- protected afterWorkerSetup (worker: ThreadWorkerWithMessageChannel): void {
- const { port1, port2 } = new MessageChannel()
- worker.postMessage({ parent: port1 }, [port1])
- worker.port1 = port1
- worker.port2 = port2
- // Listen to worker messages.
- this.registerWorkerMessageListener(worker, super.workerListener())
+ protected registerOnceWorkerMessageListener<Message extends Data | Response>(
+ workerNodeKey: number,
+ listener: (message: MessageValue<Message>) => void
+ ): void {
+ this.workerNodes[workerNodeKey].messageChannel?.port1.once(
+ 'message',
+ listener
+ )