是节点的新内容并表示。需要知道如何获取服务器的IP和端口。尝试了几件事:
const express = require('express');
const app = express();
var http = require('http');
app.set('port',12346);
var httpServer = http.createServer(app).listen(app.get('port'));
function getMethod(req,res) {
console.log("Server Port is: "+ app.get('port'));
// console.log("Server Port is: "+ httpServer.address);
console.log("Connection Type: "+ req.protocol);
res.send("Hello world!");
}
app.get('/', getMethod);
在上面的代码中,app.get向我返回了服务器端口,但是如果我查询httpServer.address,它将返回未定义,而app.address()。port返回一个错误。
有没有在应用程序中未设置就可以获取它的方法?
答案 0 :(得分:0)
http.Server
's listen
是异步的,在分发address()
事件(从文档listening
开始)之前,您不应调用Don't call server.address() until the 'listening' event has been emitted.
。
您可以通过以下几种方法执行此操作,订阅listening
回调:
httpServer.on('listening', function () {
console.log(app.address().port)
})
或者简单地使用app.listen
(创建一个http.Server
)并在listen
接受的回调中检查实例的端口:
let appInstance = app.listen(1337, function () {
console.log(`'Server listening at: ${appInstance.address().port}`)
})
这无需使用require
http
模块,并在某种程度上简化了代码。
set
上的get
/ app
方法允许您在快速应用程序上设置和检索任意值。其中一些值是“特殊的”(请参见docs)并影响应用程序的行为,但是并没有阻止您设置诸如port
之类的属性的情况;问题在于它实际上不会更改应用程序侦听的port
。
答案 1 :(得分:0)
尝试:
console.log('Port :' + httpServer.address().port);
console.log('Server:' + httpServer.address().address);