Skip to content

Instantly share code, notes, and snippets.

@Istar-Eldritch
Created January 23, 2016 13:41
Show Gist options
  • Save Istar-Eldritch/fd420ff125d680f547ea to your computer and use it in GitHub Desktop.
Save Istar-Eldritch/fd420ff125d680f547ea to your computer and use it in GitHub Desktop.
Reactive Functional Programming in NodeJS with Most.js
'use static';
const http = require('http');
const most = require('most');
const port = 3000;
const server = http.createServer();
most.fromEvent('listening', server).forEach(() => {
console.log(`Server started on port ${port}`);
});
server.on('request', (request, response) => {
response.writeHead(402, {"Content-Type": "text/plain"});
response.write('Hello world');
response.end();
});
const requests = most.fromEvent('request', server).map((e) => {
return {
request: e[0],
response: e[1]
};
});
const reqPlain = requests.map((e) => {
e.response.writeHead(200, {'Content-Type': 'text/plain'});
return e;
});
function close(e) {
e.response.end();
}
function get(e) {
return e.requet.method == 'GET';
}
function post(e) {
return e.requet.method == 'POST';
}
reqPlain.filter(post)
.map((e) => {
e.response.write('Hello POST');
return e;
})
.forEach(close);
reqPlain.filter(get)
.map((e) => {
e.response.write('Hello GET');
return e;
})
.forEach(close);
server.listen(port);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment