Node.js: Difference between revisions

From 太極
Jump to navigation Jump to search
No edit summary
Line 2: Line 2:
== How to exit ==
== How to exit ==
<pre>
<pre>
.exit
brb@brb-P45T-A:~/Downloads$ node
> Math.random()
0.14142140373587608
> .exit
</pre>
</pre>



Revision as of 14:43, 11 October 2013

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

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

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

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