谷歌大规模阻止Adobe Air网络检查

时间:2013-10-14 23:35:03

标签: actionscript-3 actionscript air osmf akamai

我最近使用了一个Adobe Air桌面应用程序,当使用google.com作为轮询URL时,成千上万人同时使用的Adobe Air桌面应用程序开始失败。每个应用程序每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"));
    }
}

1 个答案:

答案 0 :(得分:3)

我不认为轮询远程URL是检查互联网连接的最佳方式(至少每3秒)。 AIR能够像这样检查网络本身:

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

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

Event.NETWORK_CHANGE事件并不表示所有内容都发生了更改   网络活动,但仅限于网络连接已更改。空气   并不试图解释网络变化的含义。

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

话虽如此,我会将您的轮询请求放在onNetworkChange事件中,只有在必要时才会检查。