workerhelp
Version:
基于Node.js worker_threads 的轻量级跨线程RPC通信模块,支持主线程与Worker线程之间的异步方法调用。
33 lines (29 loc) • 937 B
JavaScript
const { Worker, parentPort } = require('worker_threads');
class WorkerRPCHandler {
constructor() {
this.methods = new Map();
parentPort.on('message', (data) =>
data.type === 'request' && this._handleRequest(data));
}
register(name, fn) {
if (this.methods.has(name)) {
throw new Error(`Method ${name} already registered`);
}
this.methods.set(name, fn);
}
async _handleRequest({ id, method, args }) {
try {
const fn = this.methods.get(method);
if (!fn) throw new Error(`Method ${method} not found`);
const result = await fn(...args);
parentPort.postMessage({ type: 'response', id, result });
} catch (error) {
parentPort.postMessage({
type: 'response',
id,
error: error.message
});
}
}
}
module.exports = { WorkerRPCHandler };