等到互联网连接启动节点webkit应用

时间:2016-09-21 14:54:46

标签: javascript node.js node-webkit

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



isOnline = require('is-online');
online = false;
window.console.log("Hello");
var a = function () {
  while(online == false) {
    isOnline(function(err,_online) {
      online = _online;
    });
  }
};
a();




Hello被记录但随后由于缺乏互联网连接,我的应用程序开始加载并按预期失败。还有其他想法来实现吗?

3 个答案:

答案 0 :(得分:0)

我之前的回答不起作用。这是应该的,它每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();

答案 1 :(得分:0)

您可以使用导航器对象检查在线状态:

alert(navigator.onLine);

它返回一个布尔值,因此您可以轻松使用这样的逻辑......

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

要进行快速测试,如果您从计算机中拔出CAT5线缆,则会出现错误。

答案 2 :(得分:0)

您可能还想在IIFE中使用async-await语法:

;(async function onlineCheck() {
    if(await isOnline())
        run() // I enclosed all my code into a function named run.
    else {
        console.error("Retrying... Connection attempt falied at " + (new Date()).toString());
        await onlineCheck();
    }
})();