我正在编写一个 Node 服务器,它监听 2 个端口,端口 80 和 8080。如果我 sudo
它效果很好。我想做的是,如果它无法连接到端口 80,则让它仅在端口 8080 上运行,但我不知道如何检测这种情况。我希望当我调用 server.listen
时它会抛出,如
var ports = [80, 8080];
var servers = [];
var goodPorts = [];
for (var ii = 0; ii < ports.length; ++ii) {
var port = ports[ii];
var server = http.createServer(handleRequests);
try {
server.listen(port);
servers.push(server);
goodPorts.push(port);
} catch (e) {
// not sure how to check for this. Maybe this?
if (e.toString().indexOf("EACCES") < 0) {
throw e;
} else {
console.error("could NOT connect to port: " + port);
}
}
}
console.log("Listening on port(s): " + goodPorts.join(", ") + "\n");
但是 server.listen
不会抛出异常。设置后的某个时间会发生异常。 (换句话说,在底部的 console.log
之后。
如何检查它是否会在运行时工作?
最佳答案
server.listen接受回调,如果端口不可用,该回调将收到错误:
server.listen(80, function (err) {
if (!err)
return;
server.listen(8080, function (err) {
if (err)
throw err;
});
});
关于node.js - 在node.js中,如何在运行时检查我是否可以在端口80上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402679/