Wenn ich einen Server mit dem Port 80 betreibe und versuche, xmlHTTPrequest zu verwenden, erhalte ich folgende Fehlermeldung: Fehler: listen EADDRINUSE
Warum ist es ein Problem für Nodejs, wenn ich eine Anfrage stellen möchte, während ich einen Server auf dem Port 80 laufen lasse? Für die Webbrowser ist es kein Problem: Ich kann im Internet surfen, während der Server läuft.
Der Server ist:
net.createServer(function (socket) {
socket.name = socket.remoteAddress + ":" + socket.remotePort;
console.log('connection request from: ' + socket.remoteAddress);
socket.destroy();
}).listen(options.port);
Und die Anfrage:
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();
EADDRINUSE" bedeutet, dass die Portnummer, an die listen()
versucht, den Server zu binden, bereits verwendet wird.
In Ihrem Fall muss also bereits ein Server an Port 80 laufen.
Wenn Sie einen anderen Webserver haben, der auf diesem Port läuft, müssen Sie node.js hinter diesem Server platzieren und es durch ihn projizieren.
Sie sollten auf das Ereignis "Listening" wie folgt prüfen, um zu sehen, ob der Server wirklich lauscht:
var http=require('http');
var server=http.createServer(function(req,res){
res.end('test');
});
server.on('listening',function(){
console.log('ok, server is running');
});
server.listen(80);
Nur zur Information: Skype lauscht manchmal an Anschluss 80 und verursacht daher diesen Fehler, wenn Sie versuchen, von Node.js oder einer anderen Anwendung aus an Anschluss 80 zu lauschen.
Sie können dieses Verhalten in Skype deaktivieren, indem Sie die Optionen aufrufen und auf Erweitert -> Verbindung -> Anschluss 80 verwenden (Deaktivieren Sie dieses Häkchen)
Nutzung von Skype-Anschluss 80 deaktivieren
P.S. Vergessen Sie nicht, Skype neu zu starten, nachdem Sie diese Änderung vorgenommen haben!
Ich habe diesen Fehler vor (in Knoten) mit http.client gesehen, und wie ich mich erinnere, hatte das Problem mit nicht Initialisierung der httpClient oder falsche Optionen in der httpClient Erstellung und/oder in der URL-Anforderung zu tun.