OkHttp 3.5 webSocket不保持连接

时间:2016-12-15 09:16:58

标签: android sockets okhttp3 okhttp

现在在OkHttp 3.5中包含了web socket,我希望它能够使用。但我有一个问题,如果我不使用应用平均30分钟,插座断开。为什么,我怎么能做“永恒”的连接?第二个问题,我怎么能检查socket连接?

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

1 个答案:

答案 0 :(得分:1)

这是okhttp中的一个错误,请查看此问题https://github.com/square/okhttp/issues/3197