2016-04-19 6 views
2

Wie man richtig wiederverbinden, wenn IP-Adresse geändert oder Verbindung fehlgeschlagen?Wie wieder zu verbinden okhttp-ws

I`m versuchen Reconnect okhttp-ws

.....

@Override 
    public void onFailure(IOException e, okhttp3.Response response) { 
     try { 
       connecting(); 
      } catch (Exception e1) { 
      Timber.e(e1, "onFailure"); 
     } 
    } 

    @Override 
    public void onClose(int code, String reason) { 
     Timber.d("Connection unexpectedly closed"); 
     connecting(); 
    } 

    public void connecting() { 
    if (wsClient == null) { 
     wsClient = builder.build(); 
    if (call != null) call.cancel(); 
    call = WebSocketCall.create(wsClient, request); 
    try { 
     lock.lockInterruptibly(); 
     try { call.enqueue(listener); 
     } finally { 
      lock.unlock(); 
     } 
    } catch (InterruptedException e) { 
     Timber.e(e, "connecting error"); 
    } 
} 

machen und erhalte einen Fehler

java.lang.RuntimeException: Kann Dienst starten ... (hat Extras)}: java.util.concurrent.RejectedExecutionException: Task [email protected] abgelehnt von java.util.concurrent.ThreadPoolE Xecutor @ d784f8e [Terminated, Poolgrße = 0, = 0 aktive Threads, Tasks Warteschlange = 0, erledigte Aufgaben = 1] bei android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3320)

Antwort

2

siehe exemple und meine leicht library

... 
try{ 
WebsocketClient.dispatcher().cancelAll();// to cancel all requests 
}... 

ausgelöst Auf fehlgeschlagen (...) können Sie wieder