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);
相關文章
相關標籤/搜索