>  기사  >  웹 프론트엔드  >  XMLHttpRequest를 사용할 때 Node.js에서 'Error: listening EADDRINUSE'가 발생하는 이유는 무엇입니까?

XMLHttpRequest를 사용할 때 Node.js에서 'Error: listening EADDRINUSE'가 발생하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-27 19:51:10784검색

Why Does Node.js Throw

Addressing Error: Listen EADDRINUSE in Node.js

"오류: Listen EADDRINUSE" 문제는 Node.js에서 다음을 시도할 때 발생합니다. 이미 점유된 포트에서 수신 대기합니다. Node.js는 JavaScript 애플리케이션을 실행하기 위한 런타임 환경입니다.

제공된 시나리오에서 서버는 포트 80에서 수신 대기하는 동시에 요청에 대해 XMLHttpRequest를 사용하려고 시도합니다. 브라우저는 동시 연결을 처리할 수 있지만 Node.js 서버는 포트를 사용할 수 없기 때문에 문제에 직면합니다.

언급된 서버 코드:

net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
}).listen(options.port);

서버는 본질적으로 수신을 수신하고 있습니다. 하지만 즉시 연결을 파괴합니다. 이렇게 하면 실제 요청이 처리되지 않습니다.

제공된 요청 코드:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

요청은 Node.js가 원격 웹 사이트에 HTTP GET 요청을 시도하는 동안 서버가 포트 80에서 실행 중입니다.

"오류: EADDRINUSE 수신"을 해결하려면 서버가 다음을 수행해야 합니다. 다음 중 하나:

  • 다른 포트 사용: 서버는 8080과 같은 다른 포트에서 수신 대기할 수 있으므로 XMLHttpRequest 요청이 포트 80에서 진행되도록 할 수 있습니다.
  • 서버 중지: 서버가 포트 80에서 실행되어야 하는 경우 다음을 실행하기 전에 서버를 중지해야 합니다. XMLHttpRequest 요청. 일반적인 방법은 killall -9 node를 사용하여 Node.js 프로세스를 종료하는 것입니다.
  • 프록시 서버 사용: 프록시 서버를 사용하여 들어오는 연결을 처리하고 요청을 노드로 전달할 수 있습니다. .js 서버. 이를 통해 여러 애플리케이션이 동일한 포트를 사용할 수 있습니다.

위 내용은 XMLHttpRequest를 사용할 때 Node.js에서 'Error: listening EADDRINUSE'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.