OkHttp 3.5 webSocket 不保持连接

OkHttp 3.5 webSocket does not keep the connection

现在 OkHttp 3.5 包含网络套接字,我想使用它。但我有一个问题,如果我平均 30 分钟不使用应用程序,套接字就会断开连接。为什么,我该如何连接 "eternal"?第二个问题,我如何检查套接字连接?

辛格顿class

public class ServerSocket {

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

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


}

我的连接class:

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

这是okhttp的一个bug,检查这个issue https://github.com/square/okhttp/issues/3197 .