有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在GWT中检测离线和在线状态

我正在开发一个GWT应用程序,希望检测用户是否连接了互联网。 我的主要问题是在进行异步调用时检测internet。 我们主要使用Chrome浏览器

我试着用这个:

public void onFailure(Throwable caught) {

if (caught instanceof StatusCodeException
                && ((StatusCodeException) caught).getStatusCode() == 0) {
            return "NoInternetConnnectivity";   
            }

但我发现,除了互联网连接,在许多其他情况下,我们会收到0作为状态码


共 (2) 个答案

  1. # 1 楼答案

    这段代码取自vaadin TouchKit offline实现,这是询问浏览器是否在线的唯一方法,它使用的是html5。请注意,并非所有浏览器都支持此功能,因此如果属性不存在,则必须返回true

     private static native boolean isNavigatorOnline()
     /*-{
        if($wnd.navigator.onLine != undefined) {
            return $wnd.navigator.onLine;
        }
        return true;
     }-*/;
    

    但是,这只在某些情况下有效,我想说的是,它只对移动设备足够可靠

    如果你想确保你的服务器是可访问的,我会在我的代码中有一个循环来轮询服务器,我还会捕获所有服务器的ajax响应,以检查是否有服务器故障或网络错误。通常,当你得到一个^ {CD1>}意味着你不能到达你的服务器(网络下,服务器下,CORS错误等),IMO是你必须考虑用一个消息警告用户的例子,如^ {CD2>}/P>

  2. # 2 楼答案

    最可靠的方法是依靠HTML5的导航器。在线方法。您可以添加本机方法:

    public static native boolean isOnline() /*-{
            return $wnd.navigator.onLine;
        }-*/;
    

    然后在客户端代码中使用此方法