NodeJS基础-8 HTTP源码解读

一、打开gitthub搜索node选择官方仓库javascript

二、点击进去在页面中按字母 T,进入搜索,搜索httpjava

三、选择v1.02版本,查看源码node

exports.IncomingMessage = require('_http_incoming').IncomingMessage;

exports.OutgoingMessage = require('_http_outgoing').OutgoingMessage;

提供输入输出流对象。git

exports.createServer = function(requestListener) {
  return new Server(requestListener);
};

返回一个实例对象 Server函数

 

var server = require('_http_server');
exports.ServerResponse = server.ServerResponse;
exports.STATUS_CODES = server.STATUS_CODES;

发现是require了一个私有模块,_http_server,按T进入搜索   _http_server.js,,文件中的函数ui

function Server(requestListener) {
  if (!(this instanceof Server)) return new Server(requestListener);
  net.Server.call(this, { allowHalfOpen: true });

  if (requestListener) {  //若是有回调方法
    this.addListener('request', requestListener); //增长事件监听
  }

但request是什么时候触发的呢。经过下面的函数 emit(),这个函数包括在function parserOnIncoming(req, shouldKeepAlive)中this

self.emit('request', req, res);

var res = new ServerResponse(req);
相关文章
相关标签/搜索