Run RPC over a MessagePort object from a Worker thread (or WebWorker)
npm install thread-rpc
First in the parent thread
const ThreadRPC = require('thread-rpc')
// in the main process
const main = new ThreadRPC(workerThreadsInstance)
main.respond('echo', async function (data) {
return {
echo: data
}
})
Then in the child thread
const child = new ThreadRPC(workerThreads.parentPort)
// Send a request
console.log(await child.request('echo', 'world'))
// Send a request synchronously
console.log(child.requestSync('echo', 'world'))
Create a new instance. messagePort
should be a message port instance (ie has the postMessage API).
Options include:
{
syncBufferSize: 4096 // initial size of the sync request shared array buffer
}
Setup a responder for a method. Options include:
{
transferList, // passed to postMessage's transferList
sync: bool // true is this is from requestSync - mostly here for debugging
}
Send a request to the other side of the instance.
Same as above except it's synchronous, so it blocks the thread - use with care.
Note that currently this only supports JSON.stringify'able responses or a Buffer/Uint8Array response.
MIT