Node.js
Jump to navigation
Jump to search
node.js prompt
How to exit
brb@brb-P45T-A:~/Downloads$ node > Math.random() 0.14142140373587608 > .exit
HTTP server
http://www.youtube.com/watch?v=jo_B4LTHi3I
Note HTTP is just one application of TCP.
First create a js file
var http = require('http'); var s = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello \n'); setTimeout(function() { res.end("world\n"); }, 2000); }); s.listen(8000);
Then using node program to run the js script. We can test the program by using a web browser or curl program.
# Terminal 1 node web-server.js # Terminal 2 curl http://localhost:8000 OR use "-i" to include HTTP-header in the output curl -i http://localhost:8000
The output I get is
$ curl -i http://localhost:8000 HTTP/1.1 200 OK Content-Type: text/plain Date: Sat, 19 Oct 2013 20:55:17 GMT Connection: keep-alive Transfer-Encoding: chunked Hello world
We can compare this with the Example from Hypertext Transfer Protocol in Wikipedia.
Test the http server
ab -n 1000 -c 100 http://localhost:8000
TCP server
Simple example
Create <tcp-server.js> file
var net= require('net') var server = net.createServer(function(socket) { socket.write('hello\n'); socket.end('world\n'); }); server.listen(8000);
After running this program, we can test it by using telnet or nc.
telnet localhost 8000 OR nc localhost 8000
telnet cannot quit the connection by itself (need to stop the server program) but nc can.
$ nc localhost 8000 hello world adaf adaf ^C
Echo server
var net= require('net') var server = net.createServer(function(socket) { socket.write('hello\n'); socket.write('world\n'); socket.on('data', function(data) { socket.write(data); }); }); server.listen(8000);
Chat server
net = require('net'); var sockets = []; var s = net.Server(function(socket) { sockets.push(socket); socket.on('data', function(d) { for(var i=0; i<sockets.length; i++) { if (sockets[i] == socket) continue; sockets[i].write(d); } }); socket.on('end', function() { var i = socksets.indexOf(socket); sockets.splice(i, 1); }); }); s.listen(8000);
Test it by
Terminal 1: telnet localhost 8000
Terminal 2: telnet localhost 8000
http get
$ cat hello-world-server.js setInterval(function() { console.log("world"); }, 2000) console.log("hello"); var http = require('http') setInterval(function() { console.log("fetching google.com"); http.get({ host: 'google.com' }, function(res) { console.log(res.headers); }); }, 2000) console.log("hello");