objdist

0.1.0-4 • Public • Published

ObjDist

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.

Example

Server-side

var io = require('socket.io');
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('socket.io-client');
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', 'person.name': '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('socket.io-client');
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' }
});

Readme

Keywords

none

Package Sidebar

Install

npm i objdist

Weekly Downloads

0

Version

0.1.0-4

License

none

Last publish

Collaborators

  • martinvl