objdist
v0.1.0-4
Published
Object distribution between server and clients via Socket.IO-socket-like transports.
Downloads
4
Readme
ObjSync
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 ObjSync object, which communicates viatransport
.
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' }
});