Build applications with workers with less boiler plate code.
There are multiple examples available demonstarting the features described above (listed from simpler to more advanced):
- ComChannelEndpoint: Hello World: html, ts, worker
- WorkerTask: Hello World: html, ts, worker
- WorkerTaskDirector: Hello World: html, ts, worker
- WorkerTask: Inter-Worker Communication: html, ts, Worker: 1 and 2
Try out all examples here: https://kaisalmen.github.io/wtd
This shall give you an idea how you can use module worker with WorkerTask
(derived from WorkerTask: Hello World):
// let WorkerTask create the worker
const workerTask = new WorkerTask({
endpointName,
endpointId: 1,
endpointConfig: {
$type: 'WorkerConfigParams',
url: new URL('./HelloWorldWorker.js', import.meta.url),
workerType: 'module',
},
verbose: true
});
try {
// creates and connects the worker callback functions and the WorkerTask
workerTask.connect();
// execute without init and an empty message
const resultExec = await workerTask.executeWorker({
message: WorkerTaskMessage.createEmpty()
});
// once you awaited the resulting WorkerTaskMessage extract the RawPayload
const rawPayload = resultExec.payloads?.[0] as RawPayload;
// log the hello from the HelloWorldWorker
console.log(`Worker said: ${rawPayload.message.raw?.hello}`);
} catch (e) {
// error handling
console.error(e);
}
Further information is found in the main README of the overall repository.
All changes are noted in the overall CHANGELOG.