|
@@ -35,6 +35,7 @@ import com.nextcloud.talk.models.json.websocket.BaseWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.ByeWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.CallOverallWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.ErrorOverallWebSocketMessage;
|
|
|
+import com.nextcloud.talk.models.json.websocket.ErrorWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.EventOverallWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.HelloResponseOverallWebSocketMessage;
|
|
|
import com.nextcloud.talk.models.json.websocket.JoinedRoomOverallWebSocketMessage;
|
|
@@ -54,6 +55,7 @@ import java.util.Map;
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
import autodagger.AutoInjector;
|
|
|
import okhttp3.OkHttpClient;
|
|
|
import okhttp3.Request;
|
|
@@ -66,12 +68,12 @@ import static com.nextcloud.talk.models.json.participants.Participant.ActorType.
|
|
|
import static com.nextcloud.talk.models.json.participants.Participant.ActorType.USERS;
|
|
|
import static com.nextcloud.talk.webrtc.Globals.ROOM_TOKEN;
|
|
|
import static com.nextcloud.talk.webrtc.Globals.TARGET_PARTICIPANTS;
|
|
|
+import static com.nextcloud.talk.webrtc.Globals.TARGET_ROOM;
|
|
|
|
|
|
@AutoInjector(NextcloudTalkApplication.class)
|
|
|
public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
private static final String TAG = "MagicWebSocketInstance";
|
|
|
|
|
|
-
|
|
|
@Inject
|
|
|
OkHttpClient okHttpClient;
|
|
|
|
|
@@ -81,18 +83,17 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
@Inject
|
|
|
Context context;
|
|
|
|
|
|
- private User conversationUser;
|
|
|
- private String webSocketTicket;
|
|
|
+ private final User conversationUser;
|
|
|
+ private final String webSocketTicket;
|
|
|
private String resumeId;
|
|
|
private String sessionId;
|
|
|
private boolean hasMCU;
|
|
|
private boolean connected;
|
|
|
- private WebSocketConnectionHelper webSocketConnectionHelper;
|
|
|
+ private final WebSocketConnectionHelper webSocketConnectionHelper;
|
|
|
private WebSocket internalWebSocket;
|
|
|
- private String connectionUrl;
|
|
|
+ private final String connectionUrl;
|
|
|
|
|
|
private String currentRoomToken;
|
|
|
- private int restartCount = 0;
|
|
|
private boolean reconnecting = false;
|
|
|
|
|
|
private HashMap<String, Participant> usersHashMap;
|
|
@@ -121,9 +122,13 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
private void sendHello() {
|
|
|
try {
|
|
|
if (TextUtils.isEmpty(resumeId)) {
|
|
|
- internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModel(conversationUser, webSocketTicket)));
|
|
|
+ internalWebSocket.send(
|
|
|
+ LoganSquare.serialize(webSocketConnectionHelper
|
|
|
+ .getAssembledHelloModel(conversationUser, webSocketTicket)));
|
|
|
} else {
|
|
|
- internalWebSocket.send(LoganSquare.serialize(webSocketConnectionHelper.getAssembledHelloModelForResume(resumeId)));
|
|
|
+ internalWebSocket.send(
|
|
|
+ LoganSquare.serialize(webSocketConnectionHelper
|
|
|
+ .getAssembledHelloModelForResume(resumeId)));
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
Log.e(TAG, "Failed to serialize hello model");
|
|
@@ -152,149 +157,208 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
resumeId = "";
|
|
|
}
|
|
|
|
|
|
- public void restartWebSocket() {
|
|
|
+ public final void restartWebSocket() {
|
|
|
reconnecting = true;
|
|
|
|
|
|
// TODO when improving logging, keep in mind this issue: https://github.com/nextcloud/talk-android/issues/1013
|
|
|
Log.d(TAG, "restartWebSocket: " + connectionUrl);
|
|
|
Request request = new Request.Builder().url(connectionUrl).build();
|
|
|
okHttpClient.newWebSocket(request, this);
|
|
|
- restartCount++;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onMessage(WebSocket webSocket, String text) {
|
|
|
+ public void onMessage(@NonNull WebSocket webSocket, @NonNull String text) {
|
|
|
if (webSocket == internalWebSocket) {
|
|
|
- Log.d(TAG, "Receiving : " + webSocket.toString() + " " + text);
|
|
|
+ Log.d(TAG, "Receiving : " + webSocket + " " + text);
|
|
|
|
|
|
try {
|
|
|
BaseWebSocketMessage baseWebSocketMessage = LoganSquare.parse(text, BaseWebSocketMessage.class);
|
|
|
String messageType = baseWebSocketMessage.getType();
|
|
|
- switch (messageType) {
|
|
|
- case "hello":
|
|
|
- connected = true;
|
|
|
- reconnecting = false;
|
|
|
- restartCount = 0;
|
|
|
- String oldResumeId = resumeId;
|
|
|
- HelloResponseOverallWebSocketMessage helloResponseWebSocketMessage = LoganSquare.parse(text, HelloResponseOverallWebSocketMessage.class);
|
|
|
- resumeId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getResumeId();
|
|
|
- sessionId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getSessionId();
|
|
|
- hasMCU = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().serverHasMCUSupport();
|
|
|
-
|
|
|
- for (int i = 0; i < messagesQueue.size(); i++) {
|
|
|
- webSocket.send(messagesQueue.get(i));
|
|
|
- }
|
|
|
+ if (messageType != null) {
|
|
|
+ switch (messageType) {
|
|
|
+ case "hello":
|
|
|
+ processHelloMessage(webSocket, text);
|
|
|
+ break;
|
|
|
+ case "error":
|
|
|
+ processErrorMessage(webSocket, text);
|
|
|
+ break;
|
|
|
+ case "room":
|
|
|
+ processJoinedRoomMessage(text);
|
|
|
+ break;
|
|
|
+ case "event":
|
|
|
+ processEventMessage(text);
|
|
|
+ break;
|
|
|
+ case "message":
|
|
|
+ processMessage(text);
|
|
|
+ break;
|
|
|
+ case "bye":
|
|
|
+ connected = false;
|
|
|
+ resumeId = "";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Log.e(TAG, "Received message with type: null");
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ Log.e(TAG, "Failed to recognize WebSocket message", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- messagesQueue = new ArrayList<>();
|
|
|
- HashMap<String, String> helloHasHap = new HashMap<>();
|
|
|
- if (!TextUtils.isEmpty(oldResumeId)) {
|
|
|
- helloHasHap.put("oldResumeId", oldResumeId);
|
|
|
- } else {
|
|
|
- currentRoomToken = "";
|
|
|
- }
|
|
|
+ private void processMessage(String text) throws IOException {
|
|
|
+ CallOverallWebSocketMessage callOverallWebSocketMessage =
|
|
|
+ LoganSquare.parse(text, CallOverallWebSocketMessage.class);
|
|
|
+
|
|
|
+ if (callOverallWebSocketMessage.getCallWebSocketMessage() != null) {
|
|
|
+ NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage
|
|
|
+ .getCallWebSocketMessage()
|
|
|
+ .getNcSignalingMessage();
|
|
|
+ if (ncSignalingMessage != null && TextUtils.isEmpty(ncSignalingMessage.getFrom()) &&
|
|
|
+ callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage() != null) {
|
|
|
+ ncSignalingMessage.setFrom(
|
|
|
+ callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage().getSessionId());
|
|
|
+ }
|
|
|
|
|
|
- if (!TextUtils.isEmpty(currentRoomToken)) {
|
|
|
- helloHasHap.put(ROOM_TOKEN, currentRoomToken);
|
|
|
- }
|
|
|
- eventBus.post(new WebSocketCommunicationEvent("hello", helloHasHap));
|
|
|
- break;
|
|
|
- case "error":
|
|
|
- Log.e(TAG, "Received error: " + text);
|
|
|
- ErrorOverallWebSocketMessage errorOverallWebSocketMessage = LoganSquare.parse(text, ErrorOverallWebSocketMessage.class);
|
|
|
- if (("no_such_session").equals(errorOverallWebSocketMessage.getErrorWebSocketMessage().getCode())) {
|
|
|
- Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired");
|
|
|
- resumeId = "";
|
|
|
- currentRoomToken = "";
|
|
|
- restartWebSocket();
|
|
|
- } else if (("hello_expected").equals(errorOverallWebSocketMessage.getErrorWebSocketMessage().getCode())) {
|
|
|
- restartWebSocket();
|
|
|
- }
|
|
|
+ signalingMessageReceiver.process(ncSignalingMessage);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- break;
|
|
|
- case "room":
|
|
|
- JoinedRoomOverallWebSocketMessage joinedRoomOverallWebSocketMessage = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage.class);
|
|
|
- currentRoomToken = joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomId();
|
|
|
- if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomPropertiesWebSocketMessage() != null && !TextUtils.isEmpty(currentRoomToken)) {
|
|
|
- sendRoomJoinedEvent();
|
|
|
+ private void processEventMessage(String text) throws IOException {
|
|
|
+ EventOverallWebSocketMessage eventOverallWebSocketMessage =
|
|
|
+ LoganSquare.parse(text, EventOverallWebSocketMessage.class);
|
|
|
+ if (eventOverallWebSocketMessage.getEventMap() != null) {
|
|
|
+ String target = (String) eventOverallWebSocketMessage.getEventMap().get("target");
|
|
|
+ if (target != null) {
|
|
|
+ switch (target) {
|
|
|
+ case TARGET_ROOM:
|
|
|
+ if ("message".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) {
|
|
|
+ processRoomMessageMessage(eventOverallWebSocketMessage);
|
|
|
+ } else if ("join".equals(eventOverallWebSocketMessage.getEventMap().get("type"))) {
|
|
|
+ processRoomJoinMessage(eventOverallWebSocketMessage);
|
|
|
}
|
|
|
break;
|
|
|
- case "event":
|
|
|
- EventOverallWebSocketMessage eventOverallWebSocketMessage = LoganSquare.parse(text, EventOverallWebSocketMessage.class);
|
|
|
- if (eventOverallWebSocketMessage.getEventMap() != null) {
|
|
|
- String target = (String) eventOverallWebSocketMessage.getEventMap().get("target");
|
|
|
- switch (target) {
|
|
|
- case "room":
|
|
|
- if (eventOverallWebSocketMessage.getEventMap().get("type").equals("message")) {
|
|
|
- Map<String, Object> messageHashMap =
|
|
|
- (Map<String, Object>) eventOverallWebSocketMessage.getEventMap().get("message");
|
|
|
- if (messageHashMap.containsKey("data")) {
|
|
|
- Map<String, Object> dataHashMap = (Map<String, Object>) messageHashMap.get(
|
|
|
- "data");
|
|
|
- if (dataHashMap.containsKey("chat")) {
|
|
|
- boolean shouldRefreshChat;
|
|
|
- Map<String, Object> chatMap = (Map<String, Object>) dataHashMap.get("chat");
|
|
|
- if (chatMap.containsKey("refresh")) {
|
|
|
- shouldRefreshChat = (boolean) chatMap.get("refresh");
|
|
|
- if (shouldRefreshChat) {
|
|
|
- HashMap<String, String> refreshChatHashMap = new HashMap<>();
|
|
|
- refreshChatHashMap.put(BundleKeys.KEY_ROOM_TOKEN, (String) messageHashMap.get("roomid"));
|
|
|
- refreshChatHashMap.put(BundleKeys.KEY_INTERNAL_USER_ID, Long.toString(conversationUser.getId()));
|
|
|
- eventBus.post(new WebSocketCommunicationEvent("refreshChat", refreshChatHashMap));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (eventOverallWebSocketMessage.getEventMap().get("type").equals("join")) {
|
|
|
- List<HashMap<String, Object>> joinEventList = (List<HashMap<String, Object>>) eventOverallWebSocketMessage.getEventMap().get("join");
|
|
|
- HashMap<String, Object> internalHashMap;
|
|
|
- Participant participant;
|
|
|
- for (int i = 0; i < joinEventList.size(); i++) {
|
|
|
- internalHashMap = joinEventList.get(i);
|
|
|
- HashMap<String, Object> userMap = (HashMap<String, Object>) internalHashMap.get("user");
|
|
|
- participant = new Participant();
|
|
|
- String userId = (String) internalHashMap.get("userid");
|
|
|
- if (userId != null) {
|
|
|
- participant.setActorType(USERS);
|
|
|
- participant.setActorId(userId);
|
|
|
- } else {
|
|
|
- participant.setActorType(GUESTS);
|
|
|
- // FIXME seems to be not given by the HPB: participant.setActorId();
|
|
|
- }
|
|
|
- if (userMap != null) {
|
|
|
- // There is no "user" attribute for guest participants.
|
|
|
- participant.setDisplayName((String) userMap.get("displayname"));
|
|
|
- }
|
|
|
- usersHashMap.put((String) internalHashMap.get("sessionid"), participant);
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case TARGET_PARTICIPANTS:
|
|
|
- signalingMessageReceiver.process(eventOverallWebSocketMessage.getEventMap());
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ case TARGET_PARTICIPANTS:
|
|
|
+ signalingMessageReceiver.process(eventOverallWebSocketMessage.getEventMap());
|
|
|
break;
|
|
|
- case "message":
|
|
|
- CallOverallWebSocketMessage callOverallWebSocketMessage = LoganSquare.parse(text, CallOverallWebSocketMessage.class);
|
|
|
- NCSignalingMessage ncSignalingMessage = callOverallWebSocketMessage.getCallWebSocketMessage().getNcSignalingMessage();
|
|
|
- if (TextUtils.isEmpty(ncSignalingMessage.getFrom()) && callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage() != null) {
|
|
|
- ncSignalingMessage.setFrom(callOverallWebSocketMessage.getCallWebSocketMessage().getSenderWebSocketMessage().getSessionId());
|
|
|
- }
|
|
|
-
|
|
|
- signalingMessageReceiver.process(ncSignalingMessage);
|
|
|
- break;
|
|
|
- case "bye":
|
|
|
- connected = false;
|
|
|
- resumeId = "";
|
|
|
default:
|
|
|
+ Log.i(TAG, "Received unknown/ignored event target: " + target);
|
|
|
break;
|
|
|
}
|
|
|
- } catch (IOException e) {
|
|
|
- Log.e(TAG, "Failed to recognize WebSocket message", e);
|
|
|
+ } else {
|
|
|
+ Log.w(TAG, "Received message with event target: null");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void processRoomMessageMessage(EventOverallWebSocketMessage eventOverallWebSocketMessage) {
|
|
|
+ Map<String, Object> messageHashMap = (Map<String, Object>) eventOverallWebSocketMessage
|
|
|
+ .getEventMap()
|
|
|
+ .get("message");
|
|
|
+ if (messageHashMap != null && messageHashMap.containsKey("data")) {
|
|
|
+ Map<String, Object> dataHashMap = (Map<String, Object>) messageHashMap.get("data");
|
|
|
+ if (dataHashMap != null && dataHashMap.containsKey("chat")) {
|
|
|
+ Map<String, Object> chatMap = (Map<String, Object>) dataHashMap.get("chat");
|
|
|
+ if (chatMap != null && chatMap.containsKey("refresh") && (boolean) chatMap.get("refresh")) {
|
|
|
+ HashMap<String, String> refreshChatHashMap = new HashMap<>();
|
|
|
+ refreshChatHashMap.put(BundleKeys.KEY_ROOM_TOKEN, (String) messageHashMap.get("roomid"));
|
|
|
+ refreshChatHashMap.put(BundleKeys.KEY_INTERNAL_USER_ID, Long.toString(conversationUser.getId()));
|
|
|
+ eventBus.post(new WebSocketCommunicationEvent("refreshChat", refreshChatHashMap));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void processRoomJoinMessage(EventOverallWebSocketMessage eventOverallWebSocketMessage) {
|
|
|
+ List<HashMap<String, Object>> joinEventList = (List<HashMap<String, Object>>) eventOverallWebSocketMessage
|
|
|
+ .getEventMap()
|
|
|
+ .get("join");
|
|
|
+ HashMap<String, Object> internalHashMap;
|
|
|
+ Participant participant;
|
|
|
+ for (int i = 0; i < joinEventList.size(); i++) {
|
|
|
+ internalHashMap = joinEventList.get(i);
|
|
|
+ HashMap<String, Object> userMap = (HashMap<String, Object>) internalHashMap.get("user");
|
|
|
+ participant = new Participant();
|
|
|
+ String userId = (String) internalHashMap.get("userid");
|
|
|
+ if (userId != null) {
|
|
|
+ participant.setActorType(USERS);
|
|
|
+ participant.setActorId(userId);
|
|
|
+ } else {
|
|
|
+ participant.setActorType(GUESTS);
|
|
|
+ // FIXME seems to be not given by the HPB: participant.setActorId();
|
|
|
+ }
|
|
|
+ if (userMap != null) {
|
|
|
+ // There is no "user" attribute for guest participants.
|
|
|
+ participant.setDisplayName((String) userMap.get("displayname"));
|
|
|
+ }
|
|
|
+ usersHashMap.put((String) internalHashMap.get("sessionid"), participant);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void processJoinedRoomMessage(String text) throws IOException {
|
|
|
+ JoinedRoomOverallWebSocketMessage joinedRoomOverallWebSocketMessage =
|
|
|
+ LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage.class);
|
|
|
+ if (joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage() != null) {
|
|
|
+ currentRoomToken = joinedRoomOverallWebSocketMessage.getRoomWebSocketMessage().getRoomId();
|
|
|
+
|
|
|
+ if (joinedRoomOverallWebSocketMessage
|
|
|
+ .getRoomWebSocketMessage()
|
|
|
+ .getRoomPropertiesWebSocketMessage() != null &&
|
|
|
+ !TextUtils.isEmpty(currentRoomToken)) {
|
|
|
+ sendRoomJoinedEvent();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void processErrorMessage(WebSocket webSocket, String text) throws IOException {
|
|
|
+ Log.e(TAG, "Received error: " + text);
|
|
|
+ ErrorOverallWebSocketMessage errorOverallWebSocketMessage =
|
|
|
+ LoganSquare.parse(text, ErrorOverallWebSocketMessage.class);
|
|
|
+ ErrorWebSocketMessage message = errorOverallWebSocketMessage.getErrorWebSocketMessage();
|
|
|
+
|
|
|
+ if(message != null) {
|
|
|
+ if ("no_such_session".equals(message.getCode())) {
|
|
|
+ Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired");
|
|
|
+ resumeId = "";
|
|
|
+ currentRoomToken = "";
|
|
|
+ restartWebSocket();
|
|
|
+ } else if ("hello_expected".equals(message.getCode())) {
|
|
|
+ restartWebSocket();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void processHelloMessage(WebSocket webSocket, String text) throws IOException {
|
|
|
+ connected = true;
|
|
|
+ reconnecting = false;
|
|
|
+ String oldResumeId = resumeId;
|
|
|
+ HelloResponseOverallWebSocketMessage helloResponseWebSocketMessage =
|
|
|
+ LoganSquare.parse(text, HelloResponseOverallWebSocketMessage.class);
|
|
|
+ if (helloResponseWebSocketMessage.getHelloResponseWebSocketMessage() != null) {
|
|
|
+ resumeId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getResumeId();
|
|
|
+ sessionId = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().getSessionId();
|
|
|
+ hasMCU = helloResponseWebSocketMessage.getHelloResponseWebSocketMessage().serverHasMCUSupport();
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < messagesQueue.size(); i++) {
|
|
|
+ webSocket.send(messagesQueue.get(i));
|
|
|
+ }
|
|
|
+
|
|
|
+ messagesQueue = new ArrayList<>();
|
|
|
+ HashMap<String, String> helloHasHap = new HashMap<>();
|
|
|
+ if (!TextUtils.isEmpty(oldResumeId)) {
|
|
|
+ helloHasHap.put("oldResumeId", oldResumeId);
|
|
|
+ } else {
|
|
|
+ currentRoomToken = "";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!TextUtils.isEmpty(currentRoomToken)) {
|
|
|
+ helloHasHap.put(ROOM_TOKEN, currentRoomToken);
|
|
|
+ }
|
|
|
+ eventBus.post(new WebSocketCommunicationEvent("hello", helloHasHap));
|
|
|
+ }
|
|
|
+
|
|
|
private void sendRoomJoinedEvent() {
|
|
|
HashMap<String, String> joinRoomHashMap = new HashMap<>();
|
|
|
joinRoomHashMap.put(ROOM_TOKEN, currentRoomToken);
|
|
@@ -302,12 +366,12 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onMessage(WebSocket webSocket, ByteString bytes) {
|
|
|
+ public void onMessage(@NonNull WebSocket webSocket, ByteString bytes) {
|
|
|
Log.d(TAG, "Receiving bytes : " + bytes.hex());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void onClosing(WebSocket webSocket, int code, String reason) {
|
|
|
+ public void onClosing(@NonNull WebSocket webSocket, int code, @NonNull String reason) {
|
|
|
Log.d(TAG, "Closing : " + code + " / " + reason);
|
|
|
}
|
|
|
|
|
@@ -330,7 +394,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
Log.d(TAG, " roomToken: " + roomToken);
|
|
|
Log.d(TAG, " session: " + normalBackendSession);
|
|
|
try {
|
|
|
- String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession));
|
|
|
+ String message = LoganSquare.serialize(
|
|
|
+ webSocketConnectionHelper.getAssembledJoinOrLeaveRoomModel(roomToken, normalBackendSession));
|
|
|
if (!connected || reconnecting) {
|
|
|
messagesQueue.add(message);
|
|
|
} else {
|
|
@@ -347,7 +412,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
|
|
|
private void sendCallMessage(NCSignalingMessage ncSignalingMessage) {
|
|
|
try {
|
|
|
- String message = LoganSquare.serialize(webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage));
|
|
|
+ String message = LoganSquare.serialize(
|
|
|
+ webSocketConnectionHelper.getAssembledCallMessageModel(ncSignalingMessage));
|
|
|
if (!connected || reconnecting) {
|
|
|
messagesQueue.add(message);
|
|
|
} else {
|
|
@@ -388,7 +454,8 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
|
|
|
@Subscribe(threadMode = ThreadMode.BACKGROUND)
|
|
|
public void onMessageEvent(NetworkEvent networkEvent) {
|
|
|
- if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED && !isConnected()) {
|
|
|
+ if (networkEvent.getNetworkConnectionEvent() == NetworkEvent.NetworkConnectionEvent.NETWORK_CONNECTED &&
|
|
|
+ !isConnected()) {
|
|
|
restartWebSocket();
|
|
|
}
|
|
|
}
|
|
@@ -404,9 +471,9 @@ public class MagicWebSocketInstance extends WebSocketListener {
|
|
|
/**
|
|
|
* Temporary implementation of SignalingMessageReceiver until signaling related code is extracted to a Signaling
|
|
|
* class.
|
|
|
- *
|
|
|
- * All listeners are called in the WebSocket reader thread. This thread should be the same as long as the
|
|
|
- * WebSocket stays connected, but it may change whenever it is connected again.
|
|
|
+ * <p>
|
|
|
+ * All listeners are called in the WebSocket reader thread. This thread should be the same as long as the WebSocket
|
|
|
+ * stays connected, but it may change whenever it is connected again.
|
|
|
*/
|
|
|
private static class ExternalSignalingMessageReceiver extends SignalingMessageReceiver {
|
|
|
public void process(Map<String, Object> eventMap) {
|