2016-08-22 84 views
-1

我一直在努力寻找一种方法来使用node.js来检查具有目录的服务器ip的响应。我可以用一个端口ping一台服务器,但那不是必需的。Node.JS使用IP和目录ping服务器

的URL

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 is down: getaddrinfo ENOTFOUND 127.0.0.1:9191/api/WebApis127.0.0.1:9191/api/WebApis:9191

+0

无法ping通目录 –

+0

根据协议,可以指定的目录很多。在HTTP协议中通常是一个目录,但实际上被称为一个路径(有时可能是别的东西)。如果要检查该路径是否存在,则必须连接到HTTP服务器并为该路径发出HTTP请求,然后检查返回的状态(200,404)。 –

+0

这似乎有点疯狂,目录无法ping通... – Brent

回答

-1

我不是我们ED通过的NodeJS查验网包,但对一个真正的网站测试您的代码,我发现

var hosts = [['as.com', 80]]; 

做的工作,而

var hosts = [['as.com:80', 80]]; 

产生这样的错误:

as.com:80:80 is down: getaddrinfo ENOTFOUND

而且在事实上,似乎端口正在错误报告中设置两次:

127.0.0.1:9191/api/WebApis:9191 is down: getaddrinfo ENOTFOUND

另外,我用127.0.0.1:9191服务的本地PHP项目进行了测试,它也起作用。

因此,也许你只需要削减的端口信息的主机元素的字符串部分:

var hosts = [['127.0.0.1/api/WebApis', 9191]]; 

我只是希望这可以帮助,但正如我所说,我还不习惯这个包。

+0

试过这个,但它没有工作 – Brent