I'm trying to understand more of the express and nodejs internals. Looking in express' response.js file, it frequently assigns several methods to res, which seems to be a prototype.
Specifically, res is declared as res = http.ServerResponse.prototype.
Ok, so what is http? http is declared as http = require('http').
So looking in express' http.js file, we see exports = module.exports = HTTPServer;
and HTTPServer seems to be this method:
function HTTPServer(middleware){
connect.HTTPServer.call(this, []);
this.init(middleware);
};
And this is where I get stuck. According to my logic, it would seem that ServerResponse is being called on the HTTPServer method, which of course doesn't make sense. Therefore, I must be missing something.
UPDATE:
I just realized that express creates an instance of HTTPServer:
exports.createServer = function(options){
if ('object' == typeof options) {
return new HTTPSServer(options, Array.prototype.slice.call(arguments, 1));
} else {
return new HTTPServer(Array.prototype.slice.call(arguments));
}
};
So I'm guessing it's the case that ServerResponse is actually being called on that instance? But I still cannot locate ServerResponse...
I can't see any http.js file in express source files.
According to node.js documentation on http http = require('http') will load the http module, which has a ServerResponse object.
So express code enhances the ServerResponse object with additionnal methods.