您经常会看到Node的示例hello world代码,它创建一个Http服务器,开始侦听一个端口,然后是类似以下内容的内容:
console.log('Server is listening on port 8000');
但理想情况下,你会想要这样:
console.log('Server is listening on port ' + server.port);
如何检索服务器当前正在侦听的端口,而不在调用server.listen()
之前将数字存储在变量中
我以前见过这样做,但在Node文档中找不到它。也许这是某种特定的东西来表达?
发布于 2012-07-19 13:04:16
在express v3.0中,
/* No longer valid */
var app = express.createServer();
app.listen();
console.log('Server running on %s', app.address().port);
不再起作用了!对于Express v3.0,您应该这样创建一个应用程序和一个服务器:
var express = require('express');
var http = require('http');
var app = express();
var server = http.createServer(app);
app.get('/', function(req, res) {
res.send("Hello World!");
});
server.listen(3000);
console.log('Express server started on port %s', server.address().port);
我自己遇到了这个问题,并想记录下新的语法。在https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x上可以看到Expressv3.0中的这一变化和其他变化
发布于 2011-05-12 20:57:16
在当前版本(v0.5.0-之前)中,端口似乎可以作为服务器对象的属性使用,请参见http://nodejs.org/docs/v0.4.7/api/net.html#server.address
var server = http.createServer(function(req, res) {
...
}
server.listen(8088);
console.log(server.address());
console.log(server.address().address);
console.log(server.address().port);
输出
{ address: '0.0.0.0', port: 8088 }
0.0.0.0
8088
发布于 2014-02-25 10:36:23
如果您在处理请求时需要端口,而app不可用,您可以使用以下方法:
request.socket.localPort
https://stackoverflow.com/questions/4840879
复制相似问题