如何检查Nodejs中的url(或webservice)是否还活着?

时间:2017-08-29 06:59:20

标签: node.js web-services npm

我们如何检查nodejs中的Web服务或网站是否存在?我正在使用节点版本6.11并表达。我尝试在npm使用isAlive,但没有运气。

这是我试过的那个,但它一直都是假的。

var IsAlive = require('is-alive');
var isAlive = new IsAlive();
isAlive.add("http://google.com", 301, function (err) {
    "use strict";

    if (err) {
        console.log(err);
    }
});

setInterval(function () {
    console.log(isAlive.isAlive("http://google.com"));
}, 2000);

console.log(isAlive.isAlive("http://google.com"));

我使用http也是如此:

    http.get('http://google.com', function (res) {
console.log(res);

}).on('error', function(e) {
 console.log(e);

});;

还喜欢:

    var request = require('request');
    options = {method: 'HEAD', host: 'stackoverflow.com', port: 80, path: '/'},
    req = http.request(options, function(r) {
        console.log(JSON.stringify(r.headers));
    });
req.end();

也尝试使用状态代码:

var http = require("http");
http.get({host: "google.com"},function(res){
    if (res.statusCode ==200)
        console.log ("running");
        else 
console.log ("not running");


});

我们可以使用任何其他方法吗?基本上我的要求是检查是否在不同服务器上的Web服务。

2 个答案:

答案 0 :(得分:1)

我为您编写了一个小程序,该程序从https://isitdownorjust.me/中提取数据,检查网站是否已启动或关闭。

我测试了它,网站有时不是100%稳定,但程序运行正常。

这是代码

var request = require('request');

var website = "stackoverflow",
    ext = "com";



request('https://isitdownorjust.me/'+ website +'-' + ext + '/', function (error, response, body) {

  if(error){
    console.log('Err: '+ error);
    return false;
  }

  if(body.match('seems to be working.')){
    console.log(website + '.' +ext+' is up according to isitdownorjust.me');
  }else{
    console.log(website + '.' +ext+"the website is down according to isitdownorjust.me");
  }

});

<强> USAGE

您只需将网站名称放在那里,然后将其扩展到底部即可。您不必使用.(点)

希望你喜欢它..

更新

使用普通的Node JS模块

var request = require('request');

var link = "https://nodejs.org/";



request(link , function (error, response, body) {

  if(error){
    console.log('Err: '+ error);
    return false;
  }

if(response.statusCode == 200 || response.statusCode == 201 || response.statusCode == 202){
  console.log(link + ' is up!!');
  return false;
}

if(response.statusCode == 301 || response.statusCode == 302){
  console.log(link + ' is redirecting us!!');
  return false;
}

if(response.statusCode == 401){
  console.log("you are unauthorized to " + link);
  return false;
}else{
  console.log(link + ' is down!!');
}

});

只需使用link变量。

答案 1 :(得分:1)

最后,我解决了这个问题。我怀疑的问题是因为我在代理背后。所以我修改了@turmuka给出的代码,如:

style

基本上,我需要在请求中设置代理,以确保代理不会阻止调用。 非常感谢@turmuka的答案,真的帮助我弄明白了。