This is Jet for JavaScript. Jet is the hybrid of an In-Memory Database and a Realtime Push-Framework. Node and Browsers are supported (using Browserify).
$ jetd.js
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 youngestPersons = new jet.Fetcher()
.path('startsWith', 'persons/')
.sortByKey('age', 'number')
.ascending()
.range(1, 20)
.on('data', function(persons) {
console.log(persons);
});
peer.fetch(youngestPersons);
// call methods
peer.call('greet', ['Steve']).then(function(response) {
console.log(response);
});
// set states
peer.set('person/#123', {name: 'Jose', age: 33});
Read the Todo-App Tutorial (Vanilla JS client) or the React + Redux Variant for building this simple collaborative realtime app:
$ npm install node-jet
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
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(req, res) {
// serve your stuff
});
httpServer.listen(80);
var daemon = new jet.Daemon();
daemon.listen({
server: httpServer
});
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
.
For further info and documentation refer to the Jet Homepage.
There is also the canonical ToDo-App available: