UNPKG

workerhelp

Version:

基于Node.js worker_threads 的轻量级跨线程RPC通信模块,支持主线程与Worker线程之间的异步方法调用。

33 lines (29 loc) 937 B
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 };