synko

Sync JavaScript objects between server and clients

Usage no npm install needed!

<script type="module">
  import synko from 'https://cdn.skypack.dev/synko';
</script>

README

synko

Synko is a small library that allows you synchronize data objects between server and clients and call remote functions with a very friendly API. Synko is based on the Object Sync Protocol and can be used in conjuntion with SockJS or socket.io as connector to comunicate server and browser.

npm install synko

How to use

Server side:

var synko = require('synko').server
var myserver = synko.create();
myserver.on('connect', function( user ) {
  user.sync('controllers', controllers);
});
var controllers = {
  login: function(email, password, req) {
    if ( DBValidUser(email, password) )
      req.resolve();
    else
      req.reject('Invalid email or password');
  }
};

Browser side:

var controllers = {};
var server = synko.create();
server.connect()
  .then(function(token) {
    console.log('Connected!! My token is:', token);
    return server.sync('controllers', controllers);
  })
  .then(function() {
    console.log('Controller object synced:');
    return controllers.login('enzo@josema.es', 'MyP4ssw0rd');
  })
  .then(function() {
    console.log('Logged!');
  })
  .catch(function( error ) {
    console.error( error );
  });

You can load synko on the browser as oldschool style

<script src="./browser/dist/synko.min.js">

Or with ES6 (webpack and babel):

import synko from 'synko';

You can use synko with socket.io or SockJS as connector

var server = synko.create({connector:synko.socketio});
...

API

For full API documentation visit: synko

Synko is a small library that allows you synchronize data objects between server and clients and call remote functions with a very friendly API. Synko is based on the Object Sync Protocol and can be used in conjuntion with SockJS or socket.io as connector to comunicate server and browser.

npm install synko

How to use

Server side:

var synko = require('synko').server
var myserver = synko.create();
myserver.on('connect', function( user ) {
  user.sync('controllers', controllers);
});
var controllers = {
  login: function(email, password, req) {
    if ( DBValidUser(email, password) )
      req.resolve();
    else
      req.reject('Invalid email or password');
  }
};

Browser side:

var controllers = {};
var server = synko.create();
server.connect()
  .then(function(token) {
    console.log('Connected!! My token is:', token);
    return server.sync('controllers', controllers);
  })
  .then(function() {
    console.log('Controller object synced:');
    return controllers.login('enzo@josema.es', 'MyP4ssw0rd');
  })
  .then(function() {
    console.log('Logged!');
  })
  .catch(function( error ) {
    console.error( error );
  });

You can load synko on the browser as oldschool style

<script src="./browser/dist/synko.min.js">

Or with ES6 (webpack and babel):

import synko from 'synko';

You can use synko with socket.io or SockJS as connector

var server = synko.create({connector:synko.socketio});
...

API

For full API documentation visit: https://objectsyncprotocol.gitbooks.io/synko/content/