我在一个中间件(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);
Run Code Online (Sandbox Code Playgroud)
正如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);
Run Code Online (Sandbox Code Playgroud)
中间件用于公开服务器对象.然后,您可以在任何路由器中访问它,如下所示:
app.get('/', function (req, res, next) {
console.log(req.server.get('port')); // displays 3000
});
Run Code Online (Sandbox Code Playgroud)
函数app.listen
返回您的http服务器。
资源 express/lib/application.js
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17571 次 |
最近记录: |