0

最近、何千人もの人々が同時に使用したイベントに使用された Adob​​e Air デスクトップ アプリを使用しgoogle.comて、ポーリング URL として使用すると、ネットワーク チェックが失敗するようになりました。各アプリにその URL を 3 秒ごとにチェックさせると、イベントの約 10 分後に、すべてのアプリが Google の検証ページにリダイレクトされ始め、ユーザーにロボットではないことを証明するように求められます。インターネットがないと言われました。私はすでに、ビデオ ストリーミングに Akamai の Advanced Streaming プラグイン ([NetStream を使用する] OSMF に基づく) を使用しています。ネットワーク接続を確認するより良い方法はありますか (できれば既存の NetStream オブジェクトを使用するだけです)。

ネットワーク モニターの既存のコードは次のとおりです。

public function checkNetwork(url:String):void {
    var urlRequest:URLRequest = new URLRequest(url);
    urlRequest.method = "GET";
    urlMonitor = new URLMonitor(urlRequest);
    urlMonitor.addEventListener(StatusEvent.STATUS,onStatusChange);
    urlMonitor.pollInterval = 3000;
    urlMonitor.start();
}

private function onStatusChange(event:StatusEvent):void {
    if(urlMonitor.available) {
        isNetworkDown = false;
        dispatchEvent(new Event("NetworkManager.NETWORK_UP"));
    }
    else {
        isNetworkDown = true;
        dispatchEvent(new Event("NetworkManager.NETWORK_DOWN"));
    }
}
4

1 に答える 1

3

リモート URL をポーリングすることがインターネット接続を確認する最良の方法だとは思いません (少なくとも 3 秒ごと)。AIR には、次のようにネットワーク自体をチェックする機能があります。

air.NativeApplication.nativeApplication.addEventListener(air.Event.NETWORK_CHANGE, onNetworkChange);

function onNetworkChange(event)
{
    //Check resource availability
}

Event.NETWORK_CHANGE イベントは、すべてのネットワーク アクティビティの変化を示すのではなく、ネットワーク接続が変化したことのみを示します。AIR は、ネットワークの変更の意味を解釈しようとしません。

http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7fcc.html

そうは言っても、onNetworkChange必要な場合にのみチェックするように、ポーリング要求をイベント内に配置します。

于 2013-10-14T23:46:07.817 に答える