NodeJS基础-8 HTTP源码解读

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

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

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

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

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

提供输入输出流对象。

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,,文件中的函数

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)中

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

var res = new ServerResponse(req);

 

转载于:https://my.oschina.net/u/2991733/blog/896978

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值