Page 78 - Node.js开发指南
P. 78

70  第 4 章  Node.js 核心模块


             4.5  HTTP 服务器与客户端

                 Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的
             HTTP 客户端。 http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++
             部分实现,而接口由 JavaScript  封装,兼顾了高性能与简易性。http.request  则是一个
                                                                             ①
             HTTP 客户端工具,用于向 HTTP 服务器发起请求,例如实现 Pingback 或者内容抓取。

             4.5.1  HTTP 服务器

                 http.Server 是 http 模块中的 HTTP 服务器对象,用 Node.js 做的所有基于 HTTP 协
             议的系统,如网站、社交应用甚至代理服务器,都是基于 http.Server 实现的。它提供了
             一套封装级别很低的 API,仅仅是流控制和简单的消息解析,所有的高层功能都要通过它的
             接口来实现。
                 我们在 3.1.3 节中使用 http 实现了一个服务器:

                 //app.js

                 var http = require('http');

                 http.createServer(function(req, res) {
                   res.writeHead(200, {'Content-Type': 'text/html'});
                   res.write('<h1>Node.js</h1>');
                   res.end('<p>Hello World</p>');
                 }).listen(3000);

                 console.log("HTTP server is listening at port 3000.");
                 这段代码中,http.createServer 创建了一个 http.Server 的实例,将一个函数
             作为 HTTP 请求处理函数。这个函数接受两个参数,分别是请求对象( req )和响应对象
            ( res )。在函数体内,res 显式地写回了响应代码 200 (表示请求成功),指定响应头为
             'Content-Type': 'text/html',然后写入响应体 '<h1>Node.js</h1>',通过 res.end
             结束并发送。最后该实例还调用了 listen 函数,启动服务器并监听 3000 端口。
                 1. http.Server 的事件
                 http.Server 是一个基于事件的 HTTP 服务器,所有的请求都被封装为独立的事件,
             开发者只需要对它的事件编写响应函数即可实现 HTTP  服务器的所有功能。它继承自
             EventEmitter,提供了以下几个事件。


             ——————————
                ① Pingback  是博客系统中用来通知文章被他人引用的一种手段,例如 WordPress  会自动解析文章中的链接,发送
                  Pingback 以告知链接被引用。
   73   74   75   76   77   78   79   80   81   82   83