我一直在努力寻找一种方法来使用node.js检查服务器ip的响应,该服务器ip后面有目录。我可以使用端口ping服务器,但这不是必需的。
网址
127.0.0.1:9191/api/WebApis
到目前为止我的代码
var net = require('net');
var hosts = [['127.0.0.1:9191/api/WebApis', 9191]];
setInterval(function(){
hosts.forEach(function(item) {
var sock = new net.Socket();
sock.setTimeout(2500);
sock.on('connect', function() {
console.log(item[0]+':'+item[1]+' is up.');
sock.destroy();
}).on('error', function(e) {
console.log(item[0]+':'+item[1]+' is down: ' + e.message);
}).on('timeout', function(e) {
console.log(item[0]+':'+item[1]+' is down: timeout');
}).connect(item[1], item[0]);
});
}, 1000);
节点JS输出
127.0.0.1:9191/api/WebApis:9191已关闭:getaddrinfo ENOTFOUND 127.0.0.1:9191/api/WebApis127.0.0.1:9191/api/WebApis:9191
答案 0 :(得分:-1)
我不习惯通过nodejs网络包ping,但是在我发现的真实网站上测试你的代码
var hosts = [['as.com', 80]];
工作,而
var hosts = [['as.com:80', 80]];
产生此错误:
as.com:80:80关闭:getaddrinfo ENOTFOUND
事实上,在您的错误报告中,端口似乎被设置了两次:
127.0.0.1:9191/api/WebApis:9191已关闭:getaddrinfo ENOTFOUND
另外,我使用127.0.0.1:9191中提供的本地PHP项目进行了测试,它也有效。
所以也许你只需要在hosts元素的字符串部分中删除端口信息:
var hosts = [['127.0.0.1/api/WebApis', 9191]];
我只是希望这会有所帮助,但正如我所说,我并不习惯这个包。