crudlet-socket.io
v1.0.1
Published
socket.io streams
Downloads
6
Readme
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 hostchannel
- channel to subscribe to. Default isoperation
.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() {
});