我在一个中间件(function(req, res, next) {...})里面.
有没有办法从req?访问HTTP服务器对象?
UPDATE
让我更具体一点.我试图找出服务器侦听的端口,或者unix套接字路径,如果它正在侦听它.
srq*_*inn 17
你的主app文件怎么样:
var express = require('express');
var http = require('http');
var app = express();
app.use(app.router);
app.get('/', function (req, res, next) {
  console.log(req.socket.server);
});
app.server = http.createServer(app);
app.server.listen(3000);
正如Brad所提到的,Express确实暴露了类似于返回对象的东西#createServer(),但是,TJ一直在认真考虑在将来的版本中放弃在express中包含任何HTTP模块.使用上面的代码将来是安全的.
如果您要做的是在路由器中公开服务器对象,那么,中间件是要走的路:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
app.use(function(req, res, next){ //This must be set before app.router
   req.server = server;
   next();
});
app.use(app.router); 
server.listen(3000);
中间件用于公开服务器对象.然后,您可以在任何路由器中访问它,如下所示:
app.get('/', function (req, res, next) {
  console.log(req.server.get('port')); // displays 3000
});
函数app.listen返回您的http服务器。
资源 express/lib/application.js
app.listen = function listen() {
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};
| 归档时间: | 
 | 
| 查看次数: | 17571 次 | 
| 最近记录: |