Synchronisation de périphériques avec Javascript et PouchDB

19
Vos appareils méritent plus que vos fichiers

Transcript of Synchronisation de périphériques avec Javascript et PouchDB

Page 1: Synchronisation de périphériques avec Javascript et PouchDB

Vos appareils méritent plus que vos fichiers

Page 2: Synchronisation de périphériques avec Javascript et PouchDB
Page 3: Synchronisation de périphériques avec Javascript et PouchDB

v

Page 4: Synchronisation de périphériques avec Javascript et PouchDB
Page 5: Synchronisation de périphériques avec Javascript et PouchDB
Page 6: Synchronisation de périphériques avec Javascript et PouchDB
Page 7: Synchronisation de périphériques avec Javascript et PouchDB
Page 8: Synchronisation de périphériques avec Javascript et PouchDB
Page 9: Synchronisation de périphériques avec Javascript et PouchDB
Page 10: Synchronisation de périphériques avec Javascript et PouchDB
Page 11: Synchronisation de périphériques avec Javascript et PouchDB

Setup

$ npm install pouchdb ­­save

var pouchdb = require('pouchdb');  

<script src="pouchdb.min.js"></script>

Page 12: Synchronisation de périphériques avec Javascript et PouchDB

Synchronization

var db = new PouchDB('todos');var remoteCouch = 'https://mycouch/todos';var opts = {live: true};

db.sync(remoteCouch, opts)  .on('change', onChange)  .on('uptodate', onUpdate)  .on('error', onError);

Page 13: Synchronisation de périphériques avec Javascript et PouchDB

Conflicts

var opts = {conflicts: true};db.get('docid', opts, function (err, doc) {  var rev = doc._rev;  var conflictRev = doc._conflicts[0];  rev = selectRevision(rev, conflictRev);

  opts = {rev: rev};  db.get('docid', opts, function (err, doc) {     db.put(doc);  });};

Page 14: Synchronisation de périphériques avec Javascript et PouchDB

Messaging (pub/sub)

function onChange (change) {

 if(change.doc.type === 'message'    && change.doc.chan === 'mychan') {           console.log(doc.content);

   db.put({    type: 'message',    chan: 'mychan'    content: 'Got it! Now I publish'   });  }

Page 15: Synchronisation de périphériques avec Javascript et PouchDB

cozy-labs/cozy-mobile

Cozy Mobile

# Add WebSQL plugin$ cordova plugin add https://github.com/brodysoft/Cordova­SQLitePlugin

# Cordova appvar db = new PouchDB('cozy', {adapter: 'websql'});

db.replicate.from({https://mycozy/cozy, {   batch_size: 5,   batches_limit: 1,   filter: function (doc) {     return doc.docType === 'Folder' || doc.docType === 'File';   },   live: true   since: checkpoint});

Page 16: Synchronisation de périphériques avec Javascript et PouchDB

cozy-labs/cozy-desktop

Cozy Desktop

# NodeWebkit appvar replicator = require('./backend/replication');                    replicator.runReplication …

# Node.js Backend (replication.js)var db = new Pouch('~/.cozy­desktop/db');

db.replicate.from({   https://mycozy/cozy,    filter: function (doc) {     return doc.docType === 'Folder' || doc.docType === 'File';          },   since: checkpoint})db.replicate.to(…) ;

Page 17: Synchronisation de périphériques avec Javascript et PouchDB

cozy-labs/cozy-light

Cozy Light

$ npm install cozy­light ­g

$ cozy­light install cozy­labs/cozy­light­pouchdb­api$ cozy­light install cozy­labs/cozy­light­html5­apps

$ cozy­light install mygithub/mypouchapp1$ cozy­light install mygithub/mypouchapp2

$ cozy­light startCozy Light is listening on port 19104…

# In your app… PouchDB.replicate('http://' + window.location.host + '/db/cozy', 'db')

Page 18: Synchronisation de périphériques avec Javascript et PouchDB

pouchdb/pouchdb

pouchdb/pouchdb-server

colinskow/pouch-mirror

natevw/PeerPouch

nolanlawson/pouchdb-quick-search

pouchdb.com

Page 19: Synchronisation de périphériques avec Javascript et PouchDB