|
@@ -84,6 +84,7 @@ class WebSocketInstance internal constructor(
|
|
private var internalWebSocket: WebSocket? = null
|
|
private var internalWebSocket: WebSocket? = null
|
|
private val connectionUrl: String
|
|
private val connectionUrl: String
|
|
private var currentRoomToken: String? = null
|
|
private var currentRoomToken: String? = null
|
|
|
|
+ private var currentNormalBackendSession: String? = null
|
|
private var reconnecting = false
|
|
private var reconnecting = false
|
|
private val usersHashMap: HashMap<String?, Participant>
|
|
private val usersHashMap: HashMap<String?, Participant>
|
|
private var messagesQueue: MutableList<String> = ArrayList()
|
|
private var messagesQueue: MutableList<String> = ArrayList()
|
|
@@ -169,6 +170,7 @@ class WebSocketInstance internal constructor(
|
|
isConnected = false
|
|
isConnected = false
|
|
resumeId = ""
|
|
resumeId = ""
|
|
}
|
|
}
|
|
|
|
+
|
|
else -> {}
|
|
else -> {}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
@@ -214,8 +216,10 @@ class WebSocketInstance internal constructor(
|
|
}
|
|
}
|
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
|
}
|
|
}
|
|
|
|
+
|
|
Globals.TARGET_PARTICIPANTS ->
|
|
Globals.TARGET_PARTICIPANTS ->
|
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
|
signalingMessageReceiver.process(eventOverallWebSocketMessage.eventMap)
|
|
|
|
+
|
|
else ->
|
|
else ->
|
|
Log.i(TAG, "Received unknown/ignored event target: $target")
|
|
Log.i(TAG, "Received unknown/ignored event target: $target")
|
|
}
|
|
}
|
|
@@ -292,10 +296,7 @@ class WebSocketInstance internal constructor(
|
|
val (_, roomWebSocketMessage) = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage::class.java)
|
|
val (_, roomWebSocketMessage) = LoganSquare.parse(text, JoinedRoomOverallWebSocketMessage::class.java)
|
|
if (roomWebSocketMessage != null) {
|
|
if (roomWebSocketMessage != null) {
|
|
currentRoomToken = roomWebSocketMessage.roomId
|
|
currentRoomToken = roomWebSocketMessage.roomId
|
|
- if (
|
|
|
|
- roomWebSocketMessage.roomPropertiesWebSocketMessage != null &&
|
|
|
|
- !TextUtils.isEmpty(currentRoomToken)
|
|
|
|
- ) {
|
|
|
|
|
|
+ if (roomWebSocketMessage.roomPropertiesWebSocketMessage != null && !TextUtils.isEmpty(currentRoomToken)) {
|
|
sendRoomJoinedEvent()
|
|
sendRoomJoinedEvent()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -310,6 +311,7 @@ class WebSocketInstance internal constructor(
|
|
Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired")
|
|
Log.d(TAG, "WebSocket " + webSocket.hashCode() + " resumeID " + resumeId + " expired")
|
|
resumeId = ""
|
|
resumeId = ""
|
|
currentRoomToken = ""
|
|
currentRoomToken = ""
|
|
|
|
+ currentNormalBackendSession = ""
|
|
restartWebSocket()
|
|
restartWebSocket()
|
|
} else if ("hello_expected" == message.code) {
|
|
} else if ("hello_expected" == message.code) {
|
|
restartWebSocket()
|
|
restartWebSocket()
|
|
@@ -340,6 +342,7 @@ class WebSocketInstance internal constructor(
|
|
helloHashMap["oldResumeId"] = oldResumeId
|
|
helloHashMap["oldResumeId"] = oldResumeId
|
|
} else {
|
|
} else {
|
|
currentRoomToken = ""
|
|
currentRoomToken = ""
|
|
|
|
+ currentNormalBackendSession = ""
|
|
}
|
|
}
|
|
if (!TextUtils.isEmpty(currentRoomToken)) {
|
|
if (!TextUtils.isEmpty(currentRoomToken)) {
|
|
helloHashMap[Globals.ROOM_TOKEN] = currentRoomToken
|
|
helloHashMap[Globals.ROOM_TOKEN] = currentRoomToken
|
|
@@ -386,9 +389,16 @@ class WebSocketInstance internal constructor(
|
|
if (!isConnected || reconnecting) {
|
|
if (!isConnected || reconnecting) {
|
|
messagesQueue.add(message)
|
|
messagesQueue.add(message)
|
|
} else {
|
|
} else {
|
|
- if (roomToken == currentRoomToken) {
|
|
|
|
|
|
+ if (roomToken == "") {
|
|
|
|
+ Log.d(TAG, "sending 'leave room' via websocket")
|
|
|
|
+ currentNormalBackendSession = ""
|
|
|
|
+ internalWebSocket!!.send(message)
|
|
|
|
+ } else if (roomToken == currentRoomToken && normalBackendSession == currentNormalBackendSession) {
|
|
|
|
+ Log.d(TAG, "roomToken&session are unchanged. Joining locally without to send websocket message")
|
|
sendRoomJoinedEvent()
|
|
sendRoomJoinedEvent()
|
|
} else {
|
|
} else {
|
|
|
|
+ Log.d(TAG, "Sending join room message via websocket")
|
|
|
|
+ currentNormalBackendSession = normalBackendSession
|
|
internalWebSocket!!.send(message)
|
|
internalWebSocket!!.send(message)
|
|
}
|
|
}
|
|
}
|
|
}
|