在node.js中,如何在运行时检查我是否可以在端口80上运行?

在node.js中,如何在运行时检查我是否可以在端口80上运行?,node.js,Node.js,我正在编写一个节点服务器,它侦听两个端口,端口80和8080。如果我sudoIt,效果会很好。如果它不能连接到端口80,我想做的是让它只在端口8080上运行,但我不知道如何检测这种情况。我希望当我调用服务器时它会抛出 var ports = [80, 8080]; var servers = []; var goodPorts = []; for (var ii = 0; ii < ports.length; ++ii) { var port = ports[ii]; var se

我正在编写一个节点服务器,它侦听两个端口,端口80和8080。如果我
sudo
It,效果会很好。如果它不能连接到端口80,我想做的是让它只在端口8080上运行,但我不知道如何检测这种情况。我希望当我调用
服务器时它会抛出

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");
var端口=[808080];
var服务器=[];
var goodport=[];
对于(变量ii=0;ii
但是
server.listen
不会抛出。此异常在安装后的某个时间发生。(换句话说,在那之后,
console.log
在底部

如何检查它在运行时是否正常工作?

接受回调,如果端口不可用,该回调将接收错误:

server.listen(80, function (err) {
  if (!err)
    return;

  server.listen(8080, function (err) {
    if (err)
      throw err;
  });
});