等到网络连接后再启动节点webkit应用

Wait until internet connectivity to start the node webkit app

本文关键字:节点 webkit 应用 再启动 网络 连接      更新时间:2023-09-26

我有点失落,如何使应用程序等待,直到客户端有网络连接。应用程序的消费者不需要手动启动应用程序(他们不会非常精通计算机),应用程序将在用户登录到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被记录,但随后我的应用程序开始加载,由于缺乏互联网连接而失败。

我之前的回答行不通。这里有一个应该,它每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电缆,你应该得到一个假。

你也可以在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();
    }
})();