2016-12-15 63 views
1

现在在OkHttp 3.5中包含web套接字,我希望它可以使用。但我有一个问题,如果我不使用应用程序平均30分钟,套接字断开连接。为什么,我怎么能做到“永恒”的连接?第二个问题,我如何检查套接字连接?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(); 
    } 


} 

我的连接类:

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

回答