使用' app'创建服务器请求处理程序?

时间:2016-10-12 10:02:40

标签: javascript node.js express socket.io

在简单的NodeJS中,我们可以使用 -

创建服务器
http.createServer(function(req,res) { /* header etc. */});

但我开始使用express并且服务器是自动创建的。 然后我开始学习套接字,但是socket.io需要将http服务器作为参数传递以创建套接字连接。所以现在创建我使用的服务器 -

http.createServer(app);

这是否意味着app = require('express')();实际上返回了请求处理函数?真正发生了什么?

1 个答案:

答案 0 :(得分:1)

是。它实际上返回一个函数,该函数采用(request, response, next),它是中间件原型之一。本质上,express模块​​导出一个名为createApplictaion的函数,它返回一个中间件处理程序。 Here is the current source表示快递,您可以自由浏览。

exports = module.exports = createApplication;

/**
 * Create an express application.
 *
 * @return {Function}
 * @api public
 */

function createApplication() {
  var app = function(req, res, next) {
    app.handle(req, res, next);
  };

  mixin(app, EventEmitter.prototype, false);
  mixin(app, proto, false);

  app.request = { __proto__: req, app: app };
  app.response = { __proto__: res, app: app };
  app.init();
  return app;
}