2013-10-14 33 views
0

我有一個Adobe Air桌面應用程序,最近用於一個事件,當使用google.com作爲一個輪詢URL時,成千上萬的人同時使用它開始獲取失敗的網絡檢查。讓每個應用程序每3秒檢查一次該URL,大約10分鐘後,每個應用程序開始被重定向到Google上的驗證頁面,要求用戶證明它們不是顯然無法看到的機器人,因此所有用戶被告知他們沒有互聯網。我已經在使用Akamai的高級流媒體插件(基於OSMF [使用NetStream])進行視頻流媒體。有沒有更好的方法來檢查網絡連接(最好只使用現有的NetStream對象)。谷歌阻止Adobe Air大規模網絡檢查

下面是網絡監控現有代碼:

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")); 
    } 
} 
+0

因此,投票「google.com」背後的推理是看他們是否有互聯網連接? – Ronnie

+0

是的,我寧願通過OSMF使用現有的HTTP請求 – nathanjosiah

+0

如果OSMF流產生一個錯誤,你可以假設他們失去了連接或看我的答案 – Ronnie

回答

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事件內部的方式,只有當檢查必要的。

+0

謝謝,這應該是一個更有效的檢查。 – nathanjosiah