Further improvements to MCU reconnections

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2019-05-29 11:53:09 +02:00
parent 9cf7891fbc
commit e510a35ae4

View File

@ -102,26 +102,28 @@ public class MagicWebSocketInstance extends WebSocketListener {
@Override @Override
public void onOpen(WebSocket webSocket, Response response) { public void onOpen(WebSocket webSocket, Response response) {
internalWebSocket = webSocket;
sendHello(); sendHello();
} }
private void closeWebSocket(WebSocket webSocket) {
webSocket.close(1000, null);
webSocket.cancel();
messagesQueue = new ArrayList<>();
currentRoomToken = "";
}
private void restartWebSocket() { private void restartWebSocket() {
reconnecting = true; reconnecting = true;
if (internalWebSocket != null) {
internalWebSocket.close(1000, null);
internalWebSocket.cancel();
messagesQueue = new ArrayList<>();
currentRoomToken = "";
}
Request request = new Request.Builder().url(connectionUrl).build(); Request request = new Request.Builder().url(connectionUrl).build();
internalWebSocket = okHttpClient.newWebSocket(request, this); okHttpClient.newWebSocket(request, this);
restartCount++; restartCount++;
} }
@Override @Override
public void onMessage(WebSocket webSocket, String text) { public void onMessage(WebSocket webSocket, String text) {
if (webSocket == internalWebSocket) {
Log.d(TAG, "Receiving : " + text); Log.d(TAG, "Receiving : " + text);
try { try {
BaseWebSocketMessage baseWebSocketMessage = LoganSquare.parse(text, BaseWebSocketMessage.class); BaseWebSocketMessage baseWebSocketMessage = LoganSquare.parse(text, BaseWebSocketMessage.class);
@ -233,6 +235,7 @@ public class MagicWebSocketInstance extends WebSocketListener {
Log.e(TAG, "Failed to WebSocket message"); Log.e(TAG, "Failed to WebSocket message");
} }
} }
}
@Override @Override
public void onMessage(WebSocket webSocket, ByteString bytes) { public void onMessage(WebSocket webSocket, ByteString bytes) {
@ -247,6 +250,7 @@ public class MagicWebSocketInstance extends WebSocketListener {
@Override @Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) { public void onFailure(WebSocket webSocket, Throwable t, Response response) {
Log.d(TAG, "Error : " + t.getMessage()); Log.d(TAG, "Error : " + t.getMessage());
closeWebSocket(webSocket);
restartWebSocket(); restartWebSocket();
} }