Wie kann ein WebSocket mit Koush AndroidAsync geschlossen / wiederholt / verwaltet werden?

Ich verwende Koushs AndroidAsync für einen WebSocket-Client. Mein Code folgt dem Beispiel beihttps: //github.com/koush/AndroidAsyn und funktioniert. (Beispiel unten kopiert.)

Ich benötige meine App, um ein Websocket zu öffnen, wenn es gestartet wird. Ich muss jedoch einige Probleme lösen:

A) Ich muss dem Benutzer erlauben, die Adresse des Websocket-Servers zu ändern. In diesem Fall muss ich das vorhandene Websocket schließen (was möglicherweise fehlgeschlagen ist) und ein Websocket für den neuen Server öffnen.

B) Der Server ist möglicherweise inaktiv oder nicht verfügbar. In diesem Fall möchte ich das der Aktivität melden. Momentan scheitert es einfach lautlos.

So in der Reihenfolge der Wichtigkeit:

Wie schließe ich den Websocket?Wie öffne ich effizient einen Websocket an eine neue Adresse? (Kann ich meinen AsyncHttpClient einfach wiederverwenden?)Wie versuche ich es bei einer fehlgeschlagenen oder verlorenen Verbindung erneut?Wie sende ich eine Benachrichtigung, dass die Verbindung fehlgeschlagen / geschlossen ist?

Wenn dies irgendwo dokumentiert ist, lassen Sie es mich bitte wissen.

Beispielcode von der unten kopierten Website:

AsyncHttpClient.getDefaultInstance().websocket(get,"my-protocol",new WebSocketConnectCallback(){
    @Override
    public void onCompleted(Exception ex,WebSocket webSocket){
        if(ex!=null){
            ex.printStackTrace();
            return;
        }
        webSocket.send("a string");
        webSocket.send(new byte[10]);
        webSocket.setStringCallback(new StringCallback(){
            public void onStringAvailable(String s){
                System.out.println("I got a string: "+s);
            }
        });
        webSocket.setDataCallback(new DataCallback(){
            public void onDataAvailable(ByteBufferList byteBufferList){
                System.out.println("I got some bytes!");
                // note that this data has been read
                byteBufferList.recycle();
            }
        });
    }
});

Antworten auf die Frage(2)

Ihre Antwort auf die Frage