如果我运行一个端口为80的服务器,并试图使用xmlHTTPrequest,我得到这个错误:错误:听EADDRINUSE
。
为什么nodejs在运行80端口的服务器时,想做一个请求,会出现问题?对于网络浏览器来说,这不是一个问题:我可以在服务器运行时上网冲浪。
服务器是。
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();
EADDRINUSE
意味着listen()
试图绑定服务器的端口号已经被使用。
所以,在你的例子中,肯定已经有一个服务器在80端口运行。
如果你有另一个网络服务器运行在这个端口上,你必须把node.js放在那个服务器后面,并通过它进行代理。
你应该像这样检查listening
事件,看看服务器是否真的在听。
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);