2016-12-15 3 views
1

OkHttp 3.5에 웹 소켓이 포함되어 있으므로 사용하고 싶습니다. 하지만 난 하나의 문제가, 만약 내가 평균 30minuts, 소켓 연결을 해제 응용 프로그램을 사용하지 마십시오. 왜, 어떻게 "영원한"연결을 할 수 있습니까? 그리고 두 번째 qestion, 어떻게 소켓 연결을 확인할 수 있습니까?OkHttp 3.5 webSocket이 연결을 유지하지 않습니다

Singlton 클래스

public class ServerSocket { 

    @Singleton 
    public OkHttpClient getOkHttpClient(){ 
     return new OkHttpClient(); 
    } 

    @Singleton 
    public Request getRequest(){ 
     return new Request.Builder() 
       .url(Link.url_socket) 
       .build(); 
    } 


} 

내 연결 클래스 : 그것은 okhttp에서 버그

OkHttpClient client = serverSocket.getOkHttpClient(); 
     Request request = serverSocket.getRequest(); 

     WebSocketListener webSocketListener = new WebSocketListener() { 
      @Override 
      public void onOpen(WebSocket webSocket, Response response) { 
       super.onOpen(webSocket, response); 
       Log.e("connect socket", "connect socket"); 
      } 

      @Override 
      public void onMessage(WebSocket webSocket, String text) { 
       super.onMessage(webSocket, text); 
       Log.e("onMessage", text); 
      } 

      @Override 
      public void onMessage(WebSocket webSocket, ByteString bytes) { 
       super.onMessage(webSocket, bytes); 
       Log.e("onMessage", "onMessage"); 
      } 

      @Override 
      public void onClosing(WebSocket webSocket, int code, String reason) { 
       super.onClosing(webSocket, code, reason); 
       Log.e("onClosing", "onClosing"); 
      } 

      @Override 
      public void onClosed(WebSocket webSocket, int code, String reason) { 
       super.onClosed(webSocket, code, reason); 
       Log.e("onClosed", "onClosed"); 
      } 

      @Override 
      public void onFailure(WebSocket webSocket, Throwable t, Response response) { 
       super.onFailure(webSocket, t, response); 
       Log.e("onFailure", "onFailure"); 
      } 
     }; 

     socket = client.newWebSocket(request, webSocketListener); 

답변