关于如何让应用程序等到客户端具有网络连接,我有点迷失。该应用程序的消费者不会手动启动应用程序(他们不会非常熟悉计算机),并且应用程序将在用户登录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被记录但随后由于缺乏互联网连接,我的应用程序开始加载并按预期失败。还有其他想法来实现吗?
答案 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();
}
})();