Integrate worker to offload main thread from heavy tasks

This commit is contained in:
2025-11-11 15:13:38 +01:00
parent 0f1fff0609
commit 0451a1c960
8 changed files with 115 additions and 205 deletions

View File

@@ -0,0 +1,31 @@
import path from "path";
import { Worker } from 'worker_threads';
import {Logger} from "../logging/logger.js";
function launchWorker({templatePath, avatarURL, username}) {
return new Promise((resolve, reject) => {
const workerFile = path.resolve('./wwwroot/core/namecards/nameCardWorker.js');
const worker = new Worker(workerFile);
worker.postMessage({templatePath, avatarURL, username});
worker.on('message', (result) => {
resolve(result);
worker.terminate()
.catch(err => Logger.error("Unable to terminate worker", err.message));
});
worker.on('error', (err) => {
reject(err);
worker.terminate()
.catch(err => Logger.error("Unable to terminate worker", err.message));
});
worker.on('exit', (code) => {
if (code !== 0) reject(new Error(`Worker stopped with code ${code}`));
});
});
}
export {launchWorker}