Skip to content
This repository has been archived by the owner on Dec 31, 2018. It is now read-only.

steelbrain/Worker-Exchange

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WorkerExchange

WorkerExchange is an extremely lightweight wrapper for HTML5 WebWorker and SharedWorker. It provides a consistent API across both type of workers, So you won't have to replace nothing to change between the types. You can even use the same js file as both Dedicated and Shared Worker, an example of it can be found in the Demo Folder.

It automatically declares Exchange variable in Both Worker and Host scope. It automatically creates an Exchange instance in worker scope with the name exchange.

Hello World

// Host
const worker = Exchange.create('Worker.js');
// or
const worker = Exchange.createShared('Worker.js');

worker.request('some-job', {Key: 'value'}).then(function(response){
  console.log(response); // Pong
});
// Worker.js
importScripts('/path/to/exchange.js');
exchange.onRequest('some-job', function(data, message){
  console.log(data); // {"Key": "Value"}
  message.response = "Pong";
});

Check out the Online Demo. (Check your browser console)

Installation

npm install --save worker-exchange

API

// Browser
export class Exchange {
  constructor(worker: Object)
  request(name: String, data: Mixed)
  onRequest(name: String, callback: Function)
  terminate() // <-- also disposes it
  dispose()
  static create(filePath): Exchange
  static createShared(filePath): Exchange
}

// Worker
export class Exchange {
  constructor()
  forEach(callback: Function) /// <-- iterates over ports
  observe(callback: Function): Disposable
  onRequest(name: String, callback: Function): Disposable
  onDidPortAdd(callback: Function): Disposable
  onDidPortClose(callback: Function): Disposable
  dispose()
}
class ExchangePort {
  request(name: String, data: Mixed)
  onRequest(name: String, callback: Function): Disposable
  onDidClose(callback: Function): Disposable
  dispose()
}

License

This project is licensed under the terms of MIT License. See the LICENSE file for more info.

About

Human-Friendly Web Worker wrapper.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published