Javascript 等待internet连接以启动节点webkit应用程序

Javascript 等待internet连接以启动节点webkit应用程序,javascript,node.js,node-webkit,Javascript,Node.js,Node Webkit,对于如何让应用程序等到客户端具备网络连接,我有点不知所措。该应用程序的消费者不需要手动启动该应用程序(他们不太懂计算机),并且该应用程序将在用户登录到Windows/Linux/Mac计算机时自动启动。在这种情况下,我如何确保在用户在计算机上的会话期间,只要互联网连接可用,应用程序就会启动。我使用的一个选项是提供的node main参数,用于在启动之前运行脚本。我的脚本代码是:- isOnline=require('is-online'); 在线=假; window.console.log(“

对于如何让应用程序等到客户端具备网络连接,我有点不知所措。该应用程序的消费者不需要手动启动该应用程序(他们不太懂计算机),并且该应用程序将在用户登录到Windows/Linux/Mac计算机时自动启动。在这种情况下,我如何确保在用户在计算机上的会话期间,只要互联网连接可用,应用程序就会启动。我使用的一个选项是提供的node main参数,用于在启动之前运行脚本。我的脚本代码是:-

isOnline=require('is-online');
在线=假;
window.console.log(“Hello”);
var a=函数(){
while(online==false){
isOnline(功能(错误,在线){
在线=_在线;
});
}
};

a()我以前的答案不起作用。这里有一个应该是,它每5秒钟检查一次互联网连接,只有在有连接时才会退出

var isOnline = require('is-online');
process.stdout.write("Hello\n");
var check = function() {
    process.stdout.write("Checking...\n");
    isOnline(function(err, _online) {
        if (_online) {
            // If you want to invoke a script directly, do so here.
            // If you want to script to exit when there's a connection,
            // just don't do anything here.
            process.stdout.write("Online\n");
        } else {
            process.stdout.write("Offline\n");
            setTimeout(check, 5000);
       }
   })
}
check();

您可以使用navigator对象检查联机状态:

alert(navigator.onLine);
它返回一个布尔值,因此您可以轻松地使用如下逻辑

if(navigator.onLine){Proceed();} else {Whatever();}

为了进行快速测试,如果您从计算机中拔出CAT5电缆,您应该会得到一个false。

您可能还希望在iLife中使用异步等待语法:

;(异步函数onlineCheck(){
if(等待isOnline())
run()//我将所有代码封装到一个名为run的函数中。
否则{
错误(“重试…连接尝试在”+(新日期()).toString()失败);
等待联机检查();
}
})();

有趣的问题。承诺呢?如果get请求返回200状态,则您可能还可以每隔一段时间运行一个从站点发送get请求的循环,然后运行main函数。不幸的是,我无法控制节点webkit应用程序何时启动,只能控制在它之前运行的脚本。我唯一的选择似乎是让我的脚本运行,直到我能确保机器连接到互联网。我喜欢你的方法。您还可以在这里使用立即调用的函数表达式,方法是将check定义为
(function check(){…})()。这样你就不必一次又一次地给它打电话了。