0

我有一个 Adob​​e Air 桌面应用程序,最近用于一个事件,成千上万的人同时使用该应用程序在用作google.com轮询 URL 时开始出现网络检查失败。每个应用程序每 3 秒检查一次该 URL,大约 10 分钟后,每个应用程序开始被重定向到 Google 上的验证页面,要求用户证明他们不是机器人,显然他们看不到,因此所有用户被告知他们没有互联网。我已经在使用 Akamai 的 Advanced Streaming 插件(基于 OSMF [使用 NetStream])进行视频流式传输。有没有更好的方法来检查网络连接(最好只使用现有的 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 回答