node-jet

Jet Realtime Message Bus for the Web. Daemon and Peer implementation.

About

This is Jet for Javasript. Jet is the hybrid of an In-Memory Database and a Realtime Push-Framework. Node and Browsers are supported (using Browserify).

Synopsis

var jet = require('node-jet');
 
// connect to daemon 
var peer = new jet.Peer({
  url: 'ws://localhost:11123' 
});
 
// provide methods/factories/services/actions/etc 
var greet = new jet.Method('greet');
greet.on('call', function(who) {
  console.log('Hello', who);
});
 
peer.add(greet);
 
// provide documents/realtime-status/configuration/etc 
var jim = new jet.State('persons/#123', getPerson('#123'));
jim.on('set', function(changedPerson) {
  setPerson('#123', changedPerson);
  // changes are propageted automatically 
});
 
peer.add(jim);
 
// provide read-only stuff 
var nowState = new jet.State('time/now', new Date().getTime());
 
peer.add(nowState);
 
// change async 
setInterval(function() {
  nowState.value(new Date().getTime());
}, 100);
// fetch/query content 
var persons = new jet.Fetcher()
  .path('startsWith', 'persons/')
  .on('data', function(patheventvalue) {
    ...  // events can be 'add', 'change', 'remove' 
  });
 
peer.fetch(persons);
 
// call methods 
peer.call('greet', ['Steve']).then(function(greeting) {
});
 
// set states 
peer.set('person/#123', {name: 'Jose', age: 33});

Read the Todo-App Tutorial for building this simple collaborative realtime app:

Install

$ npm install node-jet
$ bower install jet
<script src="https://rawgit.com/lipp/node-jet/master/build/jet.js"></script>

Stand-Alone Daemon

The package provides a stand-alone Jet Daemon which listens on ports 11122 (trivial protocol) and 11123 (WebSockets) per default.

Start it like this (globally):

 $ jetd.js

Or - if installed locally:

 $ node_modules/.bin/jetd.js

Integrated Daemon

If you want the Jet Daemon to listen for WebSockets on the same port as your existing (node.js) HTTP server, use the daemon.listen({server:httpServer}) method like this:

var httpServer = http.createServer(function(reqres) {
  // serve your stuff 
});
httpServer.listen(80);
 
var daemon = new jet.Daemon();
daemon.listen({
  server: httpServer
});

Radar

Open Radar on jetbus.io, which allows you to see/observe Your Jet States and Methods. Your local Jet Daemon's default WebSocket address is ws://localhost:11123.

Doc

For further info and documentation refer to the Jet Homepage.

Todo-App

There is also the canonical ToDo-App available: