node package manager
It’s your turn. Help us improve JavaScript. Take the 2017 JavaScript Ecosystem Survey »



Distributes objects between server and clients via Socket.IO-socket-like transports. Works on a KVCObject, by opening a channel on each node in the object tree, streaming only relevant, minimal updates in each channel.

Use ObjSync on clients in order to receive.

Public API

  • (constructor)(< Socket.IO-server-like>transport, [< object >options])
    Creates and returns a new ObjDist object, which communicates via transport.
    Valid options:
    • prefix - string - prefix to all channel names. Cannot be empty string. Default: 'root'

Inherits all methods of KVCObject. All updates are automatically (and minimally) synced.



var io = require('');
var ObjDist = require('objdist');
var transport = io.listen(8888);
var dist = new ObjDist(transport);
dist.setObject({foo:'bar', person:{name:'johnny'}});

Client-side A, connecting to root, receiving all updates

var io = require('');
var ObjSync = require('objsync');
var transport = io.connect('localhost/root', {port:8888});
var sync = new ObjSync(transport);
sync.once('update', function (updated) {
    console.dir(updated); // { foo: 'bar', '': 'johnny' } 
    console.dir(sync.getObject()); // { foo: 'bar', person: { name: 'johnny' } } 

Client-side B, connection to root/person, receiving only updates in the person-subtree

var io = require('');
var ObjSync = require('objsync');
var transport = io.connect('localhost/root/person', {port:8888});
var sync = new ObjSync(transport);
sync.once('update', function (updated) {
    console.dir(updated); // { name: 'johnny' } 
    console.dir(sync.getObject()); // { name: 'johnny' }