No description, website, or topics provided.
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.gitignore
.npmignore
LICENSE
Makefile
README.md
package.json

README.md

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' }
});