Android 如何在客户端实现连接故障切换

Android 如何在客户端实现连接故障切换,android,java-websocket,Android,Java Websocket,我正在尝试在android应用程序中实现连接故障切换。基本上,我有一个应用程序使用websocket连接的url列表,如果无法连接任何url,我需要尝试第二次连接。我在android端用来连接websocket的API是不同步的。所以,当我在执行这个方法之后开始连接到websocket时,我不知道连接是否建立,直到调用OnOpen方法,然后我在那里设置了一些布尔值以进一步使用 我尝试过的:我脑海中的一个解决方案是从一个线程开始调用connect方法,如果在timespan内调用的OnOpen方法

我正在尝试在android应用程序中实现连接故障切换。基本上,我有一个应用程序使用websocket连接的url列表,如果无法连接任何url,我需要尝试第二次连接。我在android端用来连接websocket的API是不同步的。所以,当我在执行这个方法之后开始连接到websocket时,我不知道连接是否建立,直到调用OnOpen方法,然后我在那里设置了一些布尔值以进一步使用

我尝试过的:我脑海中的一个解决方案是从一个线程开始调用connect方法,如果在timespan内调用的OnOpen方法是可以的,则将其休眠一段时间,否则尝试使用第二个连接url

有人能告诉我怎么解决这个问题吗。下面是一个示例代码(没有线程实现):


如果你无法连接到它,会不会呼叫OneRor?@tinysunlight lolzz yes。知道我需要什么了。谢谢
 private DataUploader() {

    // test list of url
    urlList = new ArrayList<String>();
    urlList.add("192.168.220.197:9001/observation/");
    urlList.add("192.168.220.197:9002/observation/");
    urlList.add("echo.websocket.org");

    connectWebSocket();
 }
    if (urlList.size() > -1) {
        String url = urlList.get(index);
        this.connect(url);
        index++;

    }
}



private void connect(String websocketEndPointUrl) {
    URI uri;
    try {
        websocketEndPointUrl = "ws://" + websocketEndPointUrl;
        uri = new URI(websocketEndPointUrl);
    } catch (URISyntaxException e) {
        e.printStackTrace();
        return;
    }

    mWebSocketClient = new WebSocketClient(uri) {
        @Override
        public void onOpen(ServerHandshake serverHandshake) {
            Log.i("Websocket", "Opened");
             isReady = true;
        }

        @Override
        public void onMessage(String s) {
           ///

        }

        @Override
        public void onClose(int i, String s, boolean b) {
            Log.i("Websocket", "Closed " + s);
        }

        @Override
        public void onError(Exception e) {
            Log.i("Websocket", "Error " + e.getMessage());
        }
    };

    mWebSocketClient.connect();

}