Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OkHttp 3.5 webSocket does not keep the connection

Now in OkHttp 3.5 include web socket, and i want it use. But i have one problem, if i dont use app average 30minuts, socket disconnect. Why, how i can do "eternal" connect? And second qestion, how i can check socket connect?

Singlton class

public class ServerSocket {

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

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


}

My connect 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);
like image 978
g71132 Avatar asked Jul 04 '26 17:07

g71132


1 Answers

it's a bug in okhttp, check this issue https://github.com/square/okhttp/issues/3197 .

like image 146
Geng Jiawen Avatar answered Jul 07 '26 09:07

Geng Jiawen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!