像在 CMD 中使用 Node.Js 一样连续 Ping

Ping Continuously Like Ping in CMD Using Node.Js

我想使用 node.js ping 本地网络中的主机。这是我的代码:

var ping = require('ping');

var host2 = ['192.168.0.1', '192.168.1.2', '192.168.2.3'];

host2.forEach(function(host){
    ping.sys.probe(host, function(active){
        var info = active ? 'IP ' + host + ' = Active' : 'IP ' + host + ' = Non-Active';
        console.log(info);
    });
});

此代码仅 运行 (ping) 一次。我想要的只是连续 ping。 node.js 这可能吗?

编辑: 当我 运行 代码时:

编辑 2: 使用 setInterval / setTimeout 时:

代码:

var ping = require('ping');

var host2 = ['192.168.0.1', '192.168.1.2', '192.168.2.3'];

host2.forEach(function(host){
    ping.sys.probe(host, function tes(active){
        var info = active ? 'IP ' + host + ' = Active' : 'IP ' + host + ' = Non-Active';
        console.log(info);
    });
    setInterval(tes, 2000);
});

结果:

嗯,显而易见的答案是:

var ping = require('ping');

var host2 = ['192.168.0.1', '192.168.1.2', '192.168.2.3'];

var frequency = 1000; //1 second

host2.forEach(function(host){
    setInterval(function() {
        ping.sys.probe(host, function(active){
            var info = active ? 'IP ' + host + ' = Active' : 'IP ' + host + ' = Non-Active';
            console.log(info);
        });
    }, frequency);
});

这将每秒 ping host2 数组中的每个主机一次。

现在您可以对 ping 模块使用 async await,请在下面找到它 -

const ping = require( 'ping' ),
    host = 'www.google.com';


( async () => {

    try {
        const isAlive =  await ping.promise.probe(host, { timeout: 10 });
        const msg = isAlive ? 'host ' + host + ' is alive' : 'host ' + host + ' is dead';
        console.log(msg);
    } catch ( error ) {
        console.log(error, "asassas")
    }

} )()