1.安装最新nodejs v0.1.32
wget http://nodejs.org/dist/node-v0.1.32.tar.gz tar xzvf node-v0.1.32.tar.gz cd node-v0.1.32 ./configure make make install
node -v
2.开始nodejs之旅——创建一个http 服务器
var sys = require('sys'), http = require('http'); http.createServer(function (req, res) { setTimeout(function () { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }, 2000); }).listen(8006);
做web开发的应该对请求和响应了然于胸了,浏览器用户发送一个请求(request),服务器接受这个请求,处理以后返回一个响应(response)。
nodejs 提供对request和response更低层次的控制。比如你可以给request 添加一个end事件 。就像在浏览器端添加DOM事件那样。嗯,我觉得这很cool!
var sys = require('sys'), http = require('http'); http.createServer(function (req, res) { req.addListener("end",function(){ sys.puts("request end"); }); setTimeout(function () { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }, 2000); }).listen(8006); sys.puts('Server running at http://127.0.0.1:8006/');
在终端上可以看到
浏览器上可以看到
为什么要延迟两秒才向返回信息呢,完全没必要嘛(我这个例子是在API里抄的)
var sys = require('sys'), http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.close(); }).listen(8006); sys.puts('Server running at http://127.0.0.1:8006/');
所以去掉setTimeout,依然OK!
设想一下吧,在校内上发了一条消息,你怎样让你的消息传递给你的 好友呢?用事件来触发再合适不过了,而JavaScript正是事件驱动的,只需要实现一种事件机制当你发送更新,服务器端接受到这个更新就触发一个事件,向所有你的好友传递这个消息。当然,真正要实现立刻发送到你的好友的浏览器端(他必须是在线的),还需要要长连接,这样才能保证服务器端把消息推送到浏览器端(server push )。