2014-05-01 4 views
0

2 포트 (포트 80 및 8080)를 수신하는 노드 서버를 작성하고 있습니다. sudo 인 경우 작동합니다. 내가 포트 80에 연결할 수 없다면 포트 8080에서만 실행되도록하고 싶지만 어떻게 그 케이스를 감지 할 수 있을지는 모른다. 나는node.js에서 런타임시 포트 80에서 실행할 수 있는지 확인하는 방법은 무엇입니까?

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라고하지만 server.listen throw하지 않습니다 때 던질 것입니다 희망했다. 예외는 설정 후 언젠가 발생합니다. . (즉, 하단에 그 console.log

나는 그것이 런타임에서 일 것 어떻게 확인할 수 있습니다

+2

http://stackoverflow.com/questions/19129570/how-can-i-check-if-port-is-busy-in-nodejs –

답변

1

server.listen 오류가 발생합니다 콜백을 허용하는 포트를 사용할 수없는 경우 :

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

    server.listen(8080, function (err) { 
    if (err) 
     throw err; 
    }); 
}); 
관련 문제