1.1.1 • Published 2 years ago

thread-rpc v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

thread-rpc

Run RPC over a MessagePort object from a Worker thread (or WebWorker)

npm install thread-rpc

Usage

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'))

API

const rpc = new ThreadRPC(messagePort, [options])

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
}

rpc.respond(method, async onrequest (params, opts))

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
}

const res = await rpc.request(method, params, [transferList])

Send a request to the other side of the instance.

const res = rpc.requestSync(method, params, [transferList])

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.

License

MIT

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

0.0.0

2 years ago