Można zaimplementować funkcję httpWatcher (naśladując umowę dotyczącą pliku obserwatora - fs.watch). Może sondować punkt końcowy http (trasę stanu lub plik html) i wywołać wywołanie zwrotne po zwróceniu wartości 200 (lub po osiągnięciu maksymalnej liczby uruchomień). Coś takiego:
var request = require('request');
var watch = function(uri) {
var options;
var callback;
if ('object' == typeof arguments[1]) {
options = arguments[1];
callback = arguments[2];
} else {
options = {};
callback = arguments[1];
}
if (options.interval === undefined) options.interval = 2000;
if (options.maxRuns === undefined) options.maxRuns = 10;
var runCount = 0;
var intervalId = setInterval(function() {
runCount++;
if(runCount > options.maxRuns) {
clearInterval(intervalId);
callback(null, false);
}
request(uri, function (error, response, body) {
if (!error && response.statusCode == 200) {
clearInterval(intervalId);
callback(null, true);
}
});
}, options.interval);
}
następnie używać go tak:
watch('http://blah.asdfasdfasdfasdfasdfs.com/', function(err, isGood) {
if (!err) {
console.log(isGood);
}
});
Albo przechodzą w opcji ...
watch('http://www.google.com/', {interval:1000,maxRuns:3},
function(err, isGood) {
if (!err) {
console.log(isGood);
}
});
wciąż otrzymuję błąd: "Got error: połączyć ECONNREFUSED" nawet gdy używam sudo. – user220755
@ user220755 używasz portu 8080, więc zmień port 80 na 8080 w danym pliku exmaple. I do testowania podaj ścieżkę jako "/ – user568109
Czy to, niestety, nie zadziałało. – user220755