原生HTTP服务器
学习过Nodejs的朋友肯定对下面这段代码非常熟悉:
const http = require('http');
let server = http.createServer((req, res) => {
// ....回调函数,输出hello world
res.end('hello world!')
})
server.listen(3000)
就这样简单几行代码,就搭建了一个简单的服务器,服务器以回调函数的形式处理HTTP请求。上面这段代码还有一种更加清晰的等价形式,代码如下:
let server = new http.Server();
server.on("request", function(req, res){
// ....回调函数,输出hello world
res.end('hello world!')
});
server.listen(3000);
首先创建了一个HttpServer的实例,对该实例进行request事件监听,server在3000端口进行监听。HttpServer继承与net.Server,它使用http_parser对连接的socket对象进行解析,当解析完成http header之后,会触发request事件,body数据继续保存在流中,直到使用data事件接收数据。
req是http.IncomingMessage实例(同时实现了Readable Stream接口),详情请参看文档
res是http.ServerResponse实例(同时实现了Writable Stream接口),详情请参看文档