Skip to content

kwijibo/pojosync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Syncing POJOs between clients/browsers, and your node.js server, with socket.io

##What it does

This library allows you to keep data objects up to date between multiple clients and a server.

How it works

Once you have shared an object with Client.put(object), it (and any other objects it refers to) is assigned an ID, flattened for transport, and pushed to the server. Shared objects are then broadcast to all connected clients.

##Usage

###Server

Example use with express.js. (For alternate socket.io setups, see socket.io's How To . )

   var pojosync = require('pojosync')
     , app = express()
     , server = require('http').createServer(app)
     , io = require('socket.io').listen(server, {log:false})
     , Dataserver = new pojosync.Server(io);

###Client

(Use browserify to create a file for use in browser, then reference it with a script tag. You will also need to add:

<script src="/socket.io/socket.io.js"></script>
//io defined by socket.io.js
var pojo = require('pojosync');
var Client = new pojo.Client(io);
var flossy = { type: 'Sheep', name: 'Flossy', age: 3 };
Client.put(flossy); 

Saves flossy to the server and shares the object with other clients.

var farms = Client.list({type: 'Farm'}, optional_callback); 

farms will initially be an empty array, but will fill with data once the server has returned it.

flossy.farm = {type:'Farm', name: 'Greenacres' };
Client.put(flossy);

farms will then include the new object, and flossy will be updated on all clients.

API

Client.put

Takes an object and shares it with the server (which broadcasts it to other clients). The object can be new, or a locally updated version of an already-shared object.

Client.list

Takes an object pattern and returns an array of any objects matching that pattern. This array will be kept up to date as objects are .put.

##Storage

Currently data is simply persisted on your server as a JSON file. This is simple but has its limitations - all the data must be loaded into memory at once. It should not be difficult to add persistence to other backends, such as MongoDB.

About

Sync data between browsers and your node.js server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published