node.js - 如何检查 Nodejs 中的 url(或 Web 服务)是否存在?

标签 node.js web-services npm

我们如何检查 NodeJS 中的 Web 服务或网站是否存在?我使用的是 Node 版本 6.11 和 Express。我尝试在 npm 中使用 isAlive,但没有运气。

这是我尝试过的,但它总是返回 false。

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");


});

我们可以使用其他方法吗?基本上我的要求是检查网络服务是否位于不同的服务器上。

最佳答案

我给你写了一个小程序,这个程序从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");
  }

});

使用

您所要做的就是将网站名称放在那里,并将其扩展名放在底部。您不必使用 .(点)

希望你喜欢..

更新

使用纯 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变量即可。

关于node.js - 如何检查 Nodejs 中的 url(或 Web 服务)是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45932650/

相关文章:

database - 将关系数据库转换为 couchDB (noSQL)

javascript - 使用javascript调用webservice而不使用jQuery ajax?

npm - 对于 "npm list"- 有没有办法使用通配符/正则表达式?

javascript - 使用 Amazon Dynamodb 进行不区分大小写的查询

javascript - 将 Angular2 应用程序的必要依赖项上传到 Web 主机

java - Android模拟器无法加载应用程序

java - 如何区分一个pom.xml中的不同wsdl位置-Maven

javascript - 将 React 应用程序作为后台进程运行

node.js - npm install错误4058,无法在windows中安装私有(private)模块

json - 文件系统数据