Browse Source

Some progress in websockets communication

Mario Danic 6 years ago
parent
commit
53bc42fbea

+ 10 - 1
app/src/main/java/com/nextcloud/talk/controllers/CallController.java

@@ -76,6 +76,7 @@ import com.nextcloud.talk.models.json.signaling.Signaling;
 import com.nextcloud.talk.models.json.signaling.SignalingOverall;
 import com.nextcloud.talk.models.json.signaling.settings.IceServer;
 import com.nextcloud.talk.models.json.signaling.settings.SignalingSettingsOverall;
+import com.nextcloud.talk.models.json.websocket.RoomOverallWebSocketMessage;
 import com.nextcloud.talk.utils.ApiUtils;
 import com.nextcloud.talk.utils.MagicFlipView;
 import com.nextcloud.talk.utils.NotificationUtils;
@@ -1181,7 +1182,8 @@ public class CallController extends BaseController {
     public void onMessageEvent(WebSocketCommunicationEvent webSocketCommunicationEvent) {
         if (webSocketCommunicationEvent.getType().equals("hello")) {
             callSession = webSocketClient.getSessionId();
-            MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId(callSession);
+            webSocketClient.joinRoomWithRoomId(roomToken);
+            //MagicPeerConnectionWrapper magicPeerConnectionWrapper = alwaysGetPeerConnectionWrapperForSessionId(callSession);
         } else if (webSocketCommunicationEvent.equals("MCUPeerReady")) {
         }
     }
@@ -1339,6 +1341,9 @@ public class CallController extends BaseController {
                     @Override
                     public void onNext(GenericOverall genericOverall) {
                         if (isMultiSession) {
+                            if (externalSignalingServer != null) {
+                                webSocketClient.joinRoomWithRoomId("");
+                            }
                             if (getActivity() != null) {
                                 getActivity().finish();
                             }
@@ -1371,6 +1376,10 @@ public class CallController extends BaseController {
 
                     @Override
                     public void onNext(GenericOverall genericOverall) {
+                        if (externalSignalingServer != null) {
+                            webSocketClient.joinRoomWithRoomId("");
+                        }
+
                         if (getActivity() != null) {
                             getActivity().finish();
                         }

+ 1 - 1
app/src/main/java/com/nextcloud/talk/models/json/websocket/RoomOverallWebSocketMessage.java

@@ -33,5 +33,5 @@ import lombok.Data;
 @Parcel
 public class RoomOverallWebSocketMessage extends BaseWebSocketMessage {
     @JsonField(name = "room")
-    RoomOverallWebSocketMessage roomOverallWebSocketMessage;
+    RoomWebSocketMessage roomWebSocketMessage;
 }

+ 0 - 4
app/src/main/java/com/nextcloud/talk/webrtc/MagicPeerConnectionWrapper.java

@@ -89,10 +89,6 @@ public class MagicPeerConnectionWrapper {
         if (peerConnection != null) {
             peerConnection.addStream(localMediaStream);
 
-            if (hasMCU) {
-                EventBus.getDefault().post(new WebSocketCommunicationEvent("MCUPeerReady", null));
-            }
-
             if (hasInitiated || hasMCU) {
                 DataChannel.Init init = new DataChannel.Init();
                 init.negotiated = false;

+ 17 - 0
app/src/main/java/com/nextcloud/talk/webrtc/MagicWebSocketInstance.java

@@ -27,10 +27,13 @@ import com.bluelinelabs.logansquare.LoganSquare;
 import com.nextcloud.talk.application.NextcloudTalkApplication;
 import com.nextcloud.talk.events.WebSocketCommunicationEvent;
 import com.nextcloud.talk.models.database.UserEntity;
+import com.nextcloud.talk.models.json.rooms.RoomOverall;
 import com.nextcloud.talk.models.json.websocket.BaseWebSocketMessage;
 import com.nextcloud.talk.models.json.websocket.CallOverallWebSocketMessage;
 import com.nextcloud.talk.models.json.websocket.HelloResponseOverallWebSocketMessage;
 import com.nextcloud.talk.models.json.websocket.HelloResponseWebSocketMessage;
+import com.nextcloud.talk.models.json.websocket.RoomOverallWebSocketMessage;
+import com.nextcloud.talk.models.json.websocket.RoomWebSocketMessage;
 
 import org.greenrobot.eventbus.EventBus;
 
@@ -154,4 +157,18 @@ public class MagicWebSocketInstance extends WebSocketListener {
     public WebSocket getWebSocket() {
         return webSocket;
     }
+
+    public void joinRoomWithRoomId(String roomId) {
+        RoomOverallWebSocketMessage roomOverallWebSocketMessage = new RoomOverallWebSocketMessage();
+        roomOverallWebSocketMessage.setType("room");
+        RoomWebSocketMessage roomWebSocketMessage = new RoomWebSocketMessage();
+        roomWebSocketMessage.setRoomId(roomId);
+        roomWebSocketMessage.setSessiondId(sessionId);
+        roomOverallWebSocketMessage.setRoomWebSocketMessage(roomWebSocketMessage);
+        try {
+            webSocket.send(LoganSquare.serialize(roomOverallWebSocketMessage));
+        } catch (IOException e) {
+            Log.e(TAG, "Failed to serialize room overall websocket message");
+        }
+    }
 }