1.0.1 • Published 9 years ago

crudlet-socket.io v1.0.1

Weekly downloads
3
License
ISC
Repository
github
Last release
9 years ago

Build Status Coverage Status Dependency Status

Streams for socket.io. Also works with crudlet.

Basic example

var crud = require("crudlet");
var loki = require("crudlet-loki");
var io   = require("crudlet-socket.io");

var iodb = io({

  // socket.io server host
  host: "http://localhost"
});

var db = crud.tailable(loki());

// listen for remote operations and sync with in-memory DB
iodb("tail").pipe(crud.open(loki));

// tail in-memory operations & broadcast them to the world
db("tail").pipe(crudlet.open(iodb));

// insert data into the DB. Should get broadcasted
// to socket.io
db("insert", {
  collection: "people"
  data: {
    name: "Shrek"
  }
});

server configuration

Server configuration is pretty easy to setup. Just re-broadcast incomming operations.

var io = require("socket.io");
var server = io(80);
server.on("connection", function(connection) {

  // note that "operation" is the channel that the client is
  // publishing / subscribing to
  connection.on("operation", function(operation) {

    // re-broadcast to other clients
    connection.broadcast.emit("operation", operation);
  });
});

db(options)

creates a new socket.io streamer.

  • options
    • host - socket.io server host
    • channel - channel to subscribe to. Default is operation.
    • reject - operations to reject. Default is [load].
var iodb = io({
  host: "http://localhost",
  channel: "myOperationsChannel",
  reject: ["insert", "remove", "load"]
})

stream.Readable db(operationName, options)

Broadcasts a new operation. This can be anything.

stream.Readable db(tail, filter)

Tails a remote operation.

// tail all operations
db("tail").on("data", function() {

});

// tail only insert operations
db("tail", { name: "insert" }).on("data", function() {

});

// tail only operations on people collection
db("tail", { collection: "people" }).on("data", function() {

});