Yet another web worker library by me!
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demos
test
.gitignore
Makefile
leni.js
leni.umd.js
package.json
readme.md
rollup.config.js
yarn.lock

readme.md

leni

A small library for communication between the main thread and workers.

The Problem

Web Workers are a cool way to offload expensive work to another thread. However, all communication is done through a single message event. If you want your worker to do more than 1 thing, a lot of boilerplate is required to reroute messages to the correct handler.

The Solution

This is a small library that create instances of event emitters that run both in the window and worker contexts. This makes it easy to send a message to one specific emitter, allowing you to have as many different handlers as you want.

window.js

import { connect } from 'https://unpkg.com/leni/leni.js';

let worker = new Worker('./worker.js');
let emitter = connect('app', worker);

emitter.addEventListener('anything-here', function(resp){
  console.log(resp); // Hi Matthew!
});

emitter.post('say-hi', { name: 'Matthew' });

worker.js

importScripts('https://unpkg.com/leni/leni.js');

function onApp(emitter) {
  emitter.addEventListener('say-hi', data => {
    let msg = `Hi ${data.name}!`;
    emitter.post('anything-here', msg);
  });
}

leni.subscribe('app', onApp);

That's it!

Installation

You can install with npm or yarn:

> npm install leni --save
> yarn add leni

Or better yet, use directly from unpkg:

import { connect } from 'https://unpkg.com/leni/leni.js';

// Use it!

If you plan on using leni throughout your app you can create a wrapper module like so:

leni.js

export * from 'https://unpkg.com/leni/leni.js';

app.js

import { connect } from './leni.js';

License

BSD-2-Clause