繁体   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