Monday, 23 June 2014

nodejs 0 helloworld

非常简单的helloworld:
1
2
3
4
5
6
7
var http = require("http");
 
http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type""text/plain"});
  response.write("Hello World");
  response.end();
}).listen(8888);
保存成sever.js之后 运行:
node server.js
然后在浏览器里访问http://localhost:8888就可以看到hello world了。

阻塞
node js 是单线程的, 在http 的请求时一个方法会被每个请求调用,如果这个方法的处理很繁琐,它所以会阻塞,直到上一个请求结束后再处理下一个。
http.createServer()中的那个方法就会有这个问题,所有的请求都是串进处理的。
如果需要模拟阻塞,可能会需要一个sleep的实现,这里有一个sleep的实现代码:
1
2
3
4
5
6
7
8
9
10
11
function start() {
  console.log("Request handler 'start' was called.");
 
  function sleep(milliSeconds) {
    var startTime = new Date().getTime();
    while (new Date().getTime() < startTime + milliSeconds);
  }
 
  sleep(10000);
  return "Hello Start";
}

异步(不阻塞)

exec是一个异步的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var exec = require("child_process").exec;
 
function start() {
  console.log("Request handler 'start' was called.");
  var content = "empty";
 
  exec("ls -lah"function (error, stdout, stderr) {
    content = stdout;
  });
 
  return content;
}
 
function upload() {
  console.log("Request handler 'upload' was called.");
  return "Hello Upload";
}
 
exports.start = start;
exports.upload = upload;









No comments:

Post a comment