Skip to content

Instantly share code, notes, and snippets.

@zackferrofields
Created December 17, 2015 12:30
Show Gist options
  • Save zackferrofields/818144f93150ba53736e to your computer and use it in GitHub Desktop.
Save zackferrofields/818144f93150ba53736e to your computer and use it in GitHub Desktop.
Rx.Observable Node HTTP server
var http = require('http');
var Rx = require('rx');
function observableServer(server) {
return Rx.Observable.fromEventPattern(
server.addListener.bind(server, 'request'),
server.removeListener.bind(server, 'request'),
(req, res) => ({req, res})
).takeUntil(Rx.Observable.fromEvent(server, 'close'));
}
const server = http.createServer((req, res) =>
res.writeHead(200, {'Content-Type': 'text/plain'}))
.listen(8000);
observableServer(server)
.subscribe(e => e.res.end('Hello World\n'));
process.on('SIGINT', server.close.bind(server));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment