具有IP和目录的Node.JS ping服务器

时间:2016-08-22 18:55:17

标签: javascript node.js

我一直在努力寻找一种方法来使用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

1 个答案:

答案 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]];

我只是希望这会有所帮助,但正如我所说,我并不习惯这个包。