Heim  >  Artikel  >  Web-Frontend  >  Warum gibt Node.js bei Verwendung von XMLHttpRequest „Fehler: listen EADDRINUSE' aus?

Warum gibt Node.js bei Verwendung von XMLHttpRequest „Fehler: listen EADDRINUSE' aus?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 19:51:10784Durchsuche

Why Does Node.js Throw

Adressierungsfehler: EADDRINUSE in Node.js abhören

Das Problem „Fehler: EADDRINUSE abhören“ tritt auf, wenn Node.js auf einen Versuch stößt Hören Sie auf einem bereits belegten Port. Node.js ist eine Laufzeitumgebung zum Ausführen von JavaScript-Anwendungen.

Im bereitgestellten Szenario lauscht ein Server auf Port 80 und versucht gleichzeitig, XMLHttpRequest für eine Anfrage zu verwenden. Browser können gleichzeitige Verbindungen verarbeiten, aber der Node.js-Server hat aufgrund der Nichtverfügbarkeit des Ports ein Problem.

Der Servercode, wie erwähnt:

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

Der Server wartet im Wesentlichen auf eingehende Verbindungen Verbindungen, zerstört sie aber sofort. Dies verhindert, dass tatsächliche Anfragen verarbeitet werden.

Der Anfragecode, wie bereitgestellt:

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();

Die Anfrage versucht, eine HTTP-GET-Anfrage an eine Remote-Website zu stellen, während Node.js Der Server läuft auf Port 80.

Um den „Fehler: listen EADDRINUSE“ zu beheben, sollte der Server Entweder:

  • Verwenden Sie einen anderen Port: Der Server kann einen anderen Port überwachen, z. B. 8080, sodass die XMLHttpRequest-Anfrage auf Port 80 fortgesetzt werden kann.
  • Stoppen Sie den Server: Wenn der Server auf Port 80 ausgeführt werden muss, sollte er vor der Ausführung gestoppt werden die XMLHttpRequest-Anfrage. Eine gängige Methode ist die Verwendung von killall -9 node, um den Node.js-Prozess zu beenden.
  • Verwenden Sie einen Proxyserver: Ein Proxyserver kann verwendet werden, um eingehende Verbindungen zu verarbeiten und Anforderungen an den Knoten weiterzuleiten .js-Server. Dadurch können mehrere Anwendungen denselben Port verwenden.

Das obige ist der detaillierte Inhalt vonWarum gibt Node.js bei Verwendung von XMLHttpRequest „Fehler: listen EADDRINUSE' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn