Skip to content
This repository has been archived by the owner on Apr 29, 2020. It is now read-only.
/ eq8js Public archive

EQuateJS - A web API gateway using (E)vents and (Q)ueries to manage application state

License

Notifications You must be signed in to change notification settings

eq8/eq8js

Repository files navigation

EQuateJS (eq8js)

npm node David Travis codecov

Contents

Installation

npm install --save eq8

Example

var api = require('eq8')({jwt: {secret: 'secret'}});

var state = {};

api.register({
	actions: [
		{
			name: 'Change State',
			pattern: {
				cmd: 'update'
			},
			handler: function(ctxt, args) {
				state[args.id] = args.value;
			}
		}
	],
	views: [
		{
				name: 'View State',
				pattern: {
					uri: '/state/:id'
				},
				handler: function(ctxt, args, done) {
					done(null, state[args.id]);
				}
		}
	]
});

// Listen on port 8080
api.listen(8080);

The example above registers an Action that can be triggered via a WebSocket connection - as shown below - to modify the state object.

var WebSocket = require('ws');
var ws = new WebSocket('http://localhost:8080');

ws.on('open', function() {
	ws.send(JSON.stringify({
		cmd: 'update',
		id:'1',
		value: 'foo'
	}));
});

The state for any specific id was also made available via a web interface at http://localhost:8080/state/:id by registering another concept called a View.

$ curl http://localhost:8080/state/1
foo

More Info

This package extends the eq8-api and eq8-core packages with more details and examples available at https://eq8.js.org

About

EQuateJS - A web API gateway using (E)vents and (Q)ueries to manage application state

Resources

License

Stars

Watchers

Forks

Packages

No packages published