README
request-emitter
Convert stream into an opinionated req/res handler
Installation
$ npm install git+ssh://git@github.com:seedalpha/request-emitter.git
Usage
server
var shoe = require('shoe');
var http = require('http');
var express = require('express');
var RequestEmitter = require('request-emitter');
var app = express();
var server = http.Server(app);
var api = {
hello: function(message, callback) {
callback(null, 'Hello ' + message);
}
};
var sock = shoe(function(stream) {
var client = new RequestEmitter();
client.on('request', function(name, args, callback) {
args.push(callback);
if (!api[name]) return; // die quietly
api[name].apply(api, args);
});
stream.pipe(client.getStream()).pipe(stream);
});
server.listen(process.env.PORT || 3000);
sock.install(server, '/sock');
client (via browserify)
var shoe = require('shoe');
var RequestEmitter = require('request-emitter');
var client = new RequestEmitter();
client.request('hello', 'world', function(error, result) {
console.log(error, result); // null, 'Hello world'
});
var stream = shoe('/sock');
stream.pipe(client.getStream()).pipe(stream);
Pipeline
browser
|
request router (request-emitter)
|
event-emitter (remote-emitter)
|
node-streams (shoe)
|
websocket (sock.js)
|
(ajax 1, ajax 2, long-polling, web-sockets (1,2, alpha, etc.))
|
websocket (sock.js)
|
node-streams (shoe)
|
event-emitter (remote-emitter)
|
request router (request-emitter)
|
server
Author
Vladimir Popov vlad@seedalpha.net
License
©2014 Seedalpha