http-events
v0.0.1
Published
A straight-forward module which exposes the services of an event emitter over HTTP
Readme
HTTP-EVENTS
A straight-forward module which exposes the services of an event emitter over HTTP.
Usage
You can listen to events, supplying a URL and receive simple HTTP POST requests with data when the event is emitted.
This module is an experiment designed to support loosely coupled infrastructural components much in the same way an
EventEmitter does for application components.
Installation
npm install http-events
API
This module has one call...
listen- Takes a integer value, to specify which port thehttp-eventserver should listen on.
All the rest of the interaction with this module is done using application/json traffic over HTTP. URL Schemes are as follows...
/on/:eventName- Subscribe to have POSTs sent to the callback URL whenever an event fires/off/:eventName- Unsubscribe from POSTs when the event fires the URL/emit/:eventName- Emit an event and pass data to other subscribed componentsBoth the
/onand/offexpect anapplication/jsonpayload of format...
{ postBack: 'example.com/someHandlerPath' }- The
/emitendpoint expects anapplication/jsonpayload with the arguments for the event emission.
{ whatever: { json: 'you would like to send' } }Example
// server.js
var httpEvents = require('http-events');
httpEvents.listen(8080);// component_one.js
var request = require('request-json');
var express = require('express');
var app = express();
app.use(express.bodyParser());
var client = request.newClient('http://0.0.0.0:8080/');
client.post('on/someEvent', { postBack: 'http://0.0.0.0:9091/someEventHandler' }, function(err, res){
// res.body === 'subscribed'
});
app.post('/someEventHandler', function(req, res){
console.log(req.body); // { message: 'Hi!' }
res.end();
});
app.listen(9091);// component_two.js
var request = require('request-json');
var client = request.newClient('http://0.0.0.0:8080/');
client.post('emit/someEvent', { message: 'Should get this' }, function(err, res){
// res.body === 'emitted'
});TODOS
- Unit tests
