在node.js express中访问HTTP服务器对象

我在一个中间件( function(req, res, next) {...} )中。

有没有办法从req访问HTTP服务器对象?

UPDATE

让我更具体一点。 我试图找出一个端口,服务器侦听,或unix套接字path,如果它在监听。

如何在您的主要应用程序文件中:

 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一直在认真考虑在将来的版本中删除任何包含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 }); 

由于某种原因,对于我request.app.server没有工作,可能是因为我使用快递4,挖掘后,我发现, req.socket.server作品。

函数app.listen返回你的http服务器。

快递/ lib目录/ application.js中:

 app.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); };