Como fechar / tentar novamente / gerenciar um WebSocket usando o Koush AndroidAsync?

Estou usando o AndroidAsync da Koush para um cliente WebSocket. Meu código segue o exemplo emhttps://github.com/koush/AndroidAsync e funciona. (Exemplo copiado abaixo.)

Preciso que meu aplicativo abra um soquete da web quando ele for iniciado, no entanto, preciso resolver alguns problemas:

A) Eu preciso permitir que o usuário altere o endereço do servidor websocket. Nesse caso, preciso fechar o websocket existente (que pode ter falhado) e abrir um websocket no novo servidor.

B) O servidor pode estar inoperante ou indisponível. Nesse caso, eu gostaria de relatar isso de volta à atividade. Atualmente, ele simplesmente falha silenciosamente.

Então, em ordem de importância:

Como fecho o websocket?Como faço para abrir com eficiência um websocket para um novo endereço? (Posso apenas reutilizar meu AsyncHttpClient?)Como faço para tentar novamente em uma conexão com falha ou perdida?Como forneço uma notificação de que a conexão falhou / foi fechada?

Se isso estiver documentado em algum lugar, entre em contato.

Exemplo de código do site copiado abaixo:

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();
            }
        });
    }
});

questionAnswers(1)

yourAnswerToTheQuestion