簡體   English   中英

在GWT中檢測脫機和聯機狀態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM