@zlepper/web-worker-rpc
Provides a connection implementation for web-workers.
Installation
First install the library:
npm install --save @zlepper/rpc @zlepper/web-worker-rpc
Usage
This sample shows how to implement a simple calculator that runs in a web-worker.
Start by creating the actual class that has the logic that should be run in your worker:
export class Calculator {
public add(a: number, b: number): number {
return a + b;
}
public subtract(a: number, b: number): number {
return a - b;
}
}
Next create the worker initialization code:
import { startWorkerProvider } from '@zlepper/rpc';
import { WebWorkerServerConnection } from '@zlepper/web-worker-rpc';
import { Calculator } from './calculator';
const connection = new WebWorkerServerConnection();
startWorkerProvider(new Calculator(), connection);
Lastly in your main thread: Start the worker and connect to it:
import { Calculator } from './calculator';
import { wrapBackgroundService } from '@zlepper/rpc';
import { WebWorkerClientConnection } from '@zlepper/web-worker-rpc';
const worker = new Worker('worker.ts', {
type: 'module'
});
const connection = new WebWorkerClientConnection(worker);
const wrapper = wrapBackgroundService<Calculator>(connection);
console.log(await wrapper.add(1, 2));
console.log(await wrapper.subtract(2, 1));
Also check the full sample here.