```sh npm install --save @delight-rpc/worker-threads # or yarn add @delight-rpc/worker-threads ```
npm install @delight-rpc/worker-threadssh
npm install --save @delight-rpc/worker-threads
or
yarn add @delight-rpc/worker-threads
`Usage
$3
`ts
// api.d.ts
interface IAPI {
echo(message: string): string
}// worker.ts
import { parentPort } from 'worker_threads'
import { createServer } from '@delight-rpc/worker-threads'
const api: IAPI = {
echo(message: string): string {
return message
}
}
createServer(api, parentPort!)
// main.ts
import { Worker } from 'worker_threads'
import { createClient } from '@delight-rpc/worker-threads'
const worker = new Worker('./worker.js')
const [client] = createClient(worker)
await client.echo('hello world')
`$3
`ts
// api.d.ts
interface IAPI {
echo(message: string): string
}// main.ts
import { Worker } from 'worker_threads'
import { createServer } from '@delight-rpc/worker-threads'
const api: IAPI = {
echo(message: string): string {
return message
}
}
const worker = new Worker('./worker.js')
createServer(api, worker)
// worker.ts
import { parentPort } from 'worker_threads'
import { createClient } from '@delight-rpc/worker-threads'
const [client] = createClient(parentPort!)
await client.echo('hello world')
`API
$3
`ts
function createClient(
port: MessagePort | Worker
, options?: {
parameterValidators?: DelightRPC.ParameterValidators
expectedVersion?: string
channel?: string postMessage?: (
port: MessagePort | Worker
, request: IRequest
) => void
= (port, request) => port.postMessage(request)
receiveMessage?: (message: unknown) =>
| IResponse
| undefined
= message => {
if (DelightRPC.isResult(message) || DelightRPC.isError(message)) {
return message
}
}
}
): [client: DelightRPC.ClientProxy, close: () => void]
`$3
`ts
function createBatchClient(
port: MessagePort | Worker
, options?: {
expectedVersion?: string
channel?: string postMessage?: (
port: MessagePort | Worker
, request: IBatchRequest
) => void
= (port, request) => port.postMessage(request)
receiveMessage?: (message: unknown) =>
| IError
| IBatchResponse
| undefined
= message => {
if (DelightRPC.isError(message) || DelightRPC.isBatchResponse(message)) {
return message
}
}
}
): [client: DelightRPC.BatchClient, close: () => void]
`$3
`ts
function createServer(
api: DelightRPC.ImplementationOf
, port: MessagePort | Worker
, options?: {
parameterValidators?: DelightRPC.ParameterValidators
version?: ${number}.${number}.${number}
channel?: string | RegExp | AnyChannel
ownPropsOnly?: boolean postMessage?: (
port: MessagePort | Worker
, response: IResponse | IBatchResponse
) => void
= (port, response) => port.postMessage(response)
receiveMessage?: (message: unknown) =>
| IRequest
| IBatchRequest
| undefined
= message => {
if (DelightRPC.isRequest(message) || DelightRPC.isBatchRequest(message)) {
return message
}
}
}
): () => void
``