[英]Detecting offline and online status in GWT
我正在構建GWT應用程序,並且想要檢測用戶是否已連接互聯網。 我的主要問題是在進行異步調用時檢測到Internet。 我們主要使用Chrome瀏覽器。
我嘗試使用此:
public void onFailure(Throwable caught) {
if (caught instanceof StatusCodeException
&& ((StatusCodeException) caught).getStatusCode() == 0) {
return "NoInternetConnnectivity";
}
但是我發現除了互聯網連接之外,在許多其他情況下,我們還會收到0作為狀態代碼。
這段代碼是從vaadin TouchKit 離線實現中獲取的,這是詢問瀏覽器是否在線的唯一方法是使用html5。 請注意,並非所有瀏覽器都支持此功能,因此如果屬性不存在,則必須返回true。
private static native boolean isNavigatorOnline()
/*-{
if($wnd.navigator.onLine != undefined) {
return $wnd.navigator.onLine;
}
return true;
}-*/;
但是,這僅在某些情況下有效,我想說它僅對移動設備足夠可靠。
如果您想確保服務器可訪問,那么我的代碼中將存在一個循環以輪詢服務器,同時捕獲所有服務器ajax響應以檢查是否存在服務器故障或網絡錯誤。 通常,當您獲得Response.getStatusCode == 0
意味着您無法訪問服務器(網絡故障,服務器故障,CORS錯誤等)時,必須考慮使用IMO來警告用戶類似server unreachable, test your connection, ...
的消息server unreachable, test your connection, ...
最可靠的方法是依靠HTML5的navigator.onLine方法。 您可以添加本機方法:
public static native boolean isOnline() /*-{
return $wnd.navigator.onLine;
}-*/;
然后在客戶端代碼中使用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.