IP を ping しながらフロントエンドで HTML ページを提供する Node.js アプリケーションをセットアップしようとしています。最終結果は、ping されている IP のステータスを表示する静的な Web ページになることを願っています。
Express を使用して HTML ページを正常に実行しています。<a>
基本的には、外部スクリプトによってテキストと色が変更される単一の静的ファイルです。一時的に、表示されたステータスを切り替えるボタンがあり、これまでのところうまくいっています。
Pinger
質問は、 (以下で説明する)から取得した結果に基づいて HTML を更新するにはどうすればよいですか?
2 つの Node.js ソース ファイルがあります。明らかに、主なものはserver.js
次のとおりです。
var express = require("express"),
app = express(),
Pinger = require("./pinger");
app.use(express.static(__dirname));
console.log("Using static files at /");
app.use("/styles", express.static(__dirname + '/styles'));
console.log("Using stylesheets at /styles");
app.use("/res", express.static(__dirname + '/res'));
console.log("Using resources at /res");
app.listen(3000);
console.log("Listening on port 3000");
var pinger = new Pinger('google.com'); /* how the instance would be created */
そして、Pinger
モジュールがあります:
var ping = require('ping');
var Pinger = function() {
this.host = arguments.length > 0 ? arguments[0] : 'google.com';
this.isOnline = false;
this.pingAll = function pingAll() {
console.log(">>PING: " + host);
ping.sys.probe(host, function(isAlive) {
if (isAlive) console.log(">>PONG: " + host);
else console.log("Unable to reach " + host);
});
// somehow return isAlive
};
};
module.exports = Pinger;
明らかに、現在のところ、ピンガーisOnline
は更新されていないため、false である可能性があります。
ping.sys.probe
ちなみに、コールバック内から isOnline を更新するにはどうすればよいですか? 私はさまざまなスコープを認識しており、コールバックを参照するthis.isOnline = isAlive
ため、使用するだけでは役に立たないと確信しthis
ています(そもそも間違っていて考えすぎない限り)。