-
Notifications
You must be signed in to change notification settings - Fork 5
WorkerThread
Phat Nguyen edited this page Jul 31, 2025
·
1 revision
const workerPath = path.join('<PATH_TO_WORKER_JS_FILE>');
const worker = new Worker(workerPath, {
workerData: {
// Passing data to worker
},
})
worker.on('message', message => {
// Handle message from WORKER PROCESS
});
worker.on('error', error => {
this.logger.error('[error] error: %s', error);
});
worker.on('online', async () => {
this.logger.info('[online] online');
});
worker.on('messageerror', error => {
this.logger.error('[messageerror] error: %s', error);
});
worker.on('exit', code => {
this.logger.warn('[exit] code: %s', code);
});export class WorkerClass extends BaseWorkerThreadHelper {
constructor() {
// Declare message handler
const parentPortMessageHandler = new BaseWorkerMessageBusHandlerHelper({
scope: ABSignalWorker.name,
onMessage: opts => {
// Handle message from parentPort
},
})
// Binding message handler to worker thread bus, this will start to watch events from MessagePort
this.bindWorkerBus<TMainToWorkerPayload, TWorkerToMainPayload>({
key: 'worker-1',
bus: new BaseWorkerBusHelper({
scope: ABSignalWorker.name,
port: parentPort!, // This could be any MessagePort
busHandler: parentPortMessageHandler,
}),
});
}
getWorkerToMainTunnel() {
return this.getWorkerBus<TMainToWorkerPayload, TWorkerToMainPayload>({
key: 'worker-1',
});
}
exampleFunction() {
const tunnelEmitter = this.getWorkerToMainTunnel();
// Post message from WORKER PROCESS to MAIN PROCESS
tunnelEmitter.postMessage({
message: {
type: 'MESSAGE_TYPE',
payload: {}, // any payload here
},
transferList: undefined,
})
}
// Some extra code
}Minimal Technology Vietnam
Minimal Technology Vietnam