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);
it's a bug in okhttp, check this issue https://github.com/square/okhttp/issues/3197 .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With