2016-09-21 3 views
-1

クライアントにネットワーク接続が確立するまで、アプリを待たせる方法は少し失われています。アプリの消費者は、手動でアプリを起動することは期待されていません(コンピュータにはあまり読み書きできません)。アプリはWindows/Linux/Macマシンへのユーザログイン時に自動的に起動します。このような場合、どのようにしてインターネット接続が利用可能になるとすぐに、コンピュータ上のユーザーのセッション中にアプリが起動するようにしますか。私が使用している1つのオプションは、起動前にスクリプトを実行するために提供されるnode-mainパラメータです。スクリプトの私のコードです: -インターネット接続が完了するまで待ち、ノードWebkitアプリを起動します

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

こんにちは記録されますが、その後、私のアプリがロードを開始し、原因インターネット接続の欠如に期待通りに失敗しました。これを実装する他のアイデアですか?

+0

興味深い問題です。約束はどうですか? get要求が200の状態を返す場合は、インターバルでサイトからget要求を送信し、main関数を実行するループを実行することもできます。 – Brian

+0

残念ながら、ノードWebkitアプリが起動するときは制御できません。その前に実行されるスクリプトだけです。私の唯一の選択肢は、マシンがインターネットに接続されていることを確認できるまでスクリプトを実行させることです。 –

答えて

0

私の以前の回答はうまくいかないでしょう。これは、5秒ごとにインターネット接続を確認し、接続があるときにのみ終了する必要があります。

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

...

alert(navigator.onLine); 

あなたは簡単にこのようなロジックを使用することができますので、それはブール値を返します。

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(); 
0

あなたがオンライン状態を確認するために、ナビゲータオブジェクトを使用することができますクイックテスト、CAT5ケーブルをコンピュータから引き抜くと、間違ってしまうはずです。

関連する問題