android - OkHttp 3.5 webSocket 不保持连接

标签 android sockets okhttp

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

单例类

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

最佳答案

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

关于android - OkHttp 3.5 webSocket 不保持连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41160387/

相关文章:

java - 如何使用okhttp上传文件?

android - 如何使背景图像持久化

Android/Iphone 套接字通信

安卓 : Paypal implementation

c++ - HTTP 响应 header 可以不从状态行开始吗?

android - Retrofit 2 需要 HTTP 方法注解(如@GET、@POST 等)

android - 在运行时更改改造 okhttp 客户端

java - 如何在一定的时间间隔后重复调用一个方法?

java - 客户端断开连接后,如何从服务器中删除客户端用户名?

python - 是否可以在 Twisted (Python) 中使用原始套接字