lenze

1.0.3 • Public • Published

lenze

cross instance state replication with function invoking

Usage

In thread 1:

var Lenze = require('lenze');
 
var lenze = Lenze(sourceStateObject, {
 
    // Optional, defaults to 30
    // How often to poll when there have been recent changes
    minInterval: 30,
 
    // Optional, defaults to 300
    // How often to poll when there have not been recent changes
    maxInterval: 300,
 
    // Optional, defaults to 1000
    // How long to poll at minInterval before returning to maxInterval
    dozeInterval: 300,
 
    // How to send updates
    send: function(data){
        self.postMessage(data);
    },
 
    // How to receive invocations/connects
    receive: function(callback){
        self.addEventListener('message', function(message){
            callback(message.data);
        });
    }
});
 
state.x = 10;
 
state.doSomething = function(x){
    console.log(x);
};

In main thread:

var Lenze = require('../../');
 
var worker = new Worker("thread1.js");
 
var lenze = Lenze.replicant(targetStateObject, {
 
    // How to recieve updates/state
    receive: function(callback){
        worker.addEventListener('message', function(message){
            callback(message.data);
        });
    },
 
    // How to send invocations/connects
    send: function(data){
        worker.postMessage(data);
    }
});
 
// Called when the replicant gets state/change for the first time.
lenze.on('ready', function(){
 
    // This will cause 'dooby' to be logged in the first thread.
    lenze.state.doSomething('dooby');
 
});
 
// Called when any state changes within the lenze. (probably often);
lenze.on('change', function(){
 
    console.log(lenze.state);
 
});

Notes

  • Instance references (objects/function) are maintained.

This is a very experimental. The code is very messy and not optimised. There are many TODOs floating around my head.

Readme

Keywords

none

Package Sidebar

Install

npm i lenze

Weekly Downloads

8

Version

1.0.3

License

ISC

Last publish

Collaborators

  • korynunn