@zlepper/web-worker-rpc
TypeScript icon, indicating that this package has built-in type declarations

0.0.10 • Public • Published

@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:

// calculator.ts
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:

// worker.ts
import { startWorkerProvider } from '@zlepper/rpc';
import { WebWorkerServerConnection } from '@zlepper/web-worker-rpc';
import { Calculator } from './calculator';

// Create a wrapper around the connection. The specific wrapper class
// depends on which worker model you are using.
const connection = new WebWorkerServerConnection();
// Then provide the actual class you want to wrap.
startWorkerProvider(new Calculator(), connection);

Lastly in your main thread: Start the worker and connect to it:

// main.ts
import { Calculator } from './calculator';
import { wrapBackgroundService } from '@zlepper/rpc';
import { WebWorkerClientConnection } from '@zlepper/web-worker-rpc';

// First start the worker itself
const worker = new Worker('worker.ts', {
  type: 'module'
});
// Wrap the connection, the class is again specific to the worker model 
// you wish to use. 
const connection = new WebWorkerClientConnection(worker);

// Lastly access the wrapped "instance" of your class. 
const wrapper = wrapBackgroundService<Calculator>(connection);

console.log(await wrapper.add(1, 2)); // Logs '3'
console.log(await wrapper.subtract(2, 1)); // Logs '1'

Also check the full sample here.

Readme

Keywords

none

Package Sidebar

Install

npm i @zlepper/web-worker-rpc

Weekly Downloads

142

Version

0.0.10

License

ISC

Unpacked Size

6.16 kB

Total Files

11

Last publish

Collaborators

  • zlepper