summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2022-02-25 21:28:45 +0100
committerDaniel Calviño Sánchez <danxuliu@gmail.com>2022-02-25 21:28:45 +0100
commitef643d5cfd8eb31a6d83ba29761c778476a86a09 (patch)
tree831a6ba440e530c5055f92d2e54da330ecac460d
parentcc3aac057ce756aa6fe7f051574930d369f6d4bb (diff)
Do not force reconnections when starting and stopping mediado-not-force-reconnections-when-starting-and-stopping-media
Instead of forcing a reconnection to ensure that clients will realize that there was a change in the media being published trust them to proactively establish connections based on the changes in the call flags. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
-rw-r--r--src/utils/webrtc/webrtc.js44
1 files changed, 32 insertions, 12 deletions
diff --git a/src/utils/webrtc/webrtc.js b/src/utils/webrtc/webrtc.js
index 67d563325..5201f9d1a 100644
--- a/src/utils/webrtc/webrtc.js
+++ b/src/utils/webrtc/webrtc.js
@@ -1091,9 +1091,9 @@ export default function initWebRtc(signaling, _callParticipantCollection, _local
return
}
- const forceReconnectOnceLocalMediaStarted = (constraints) => {
- webrtc.off('localMediaStarted', forceReconnectOnceLocalMediaStarted)
- webrtc.off('localMediaError', forceReconnectOnceLocalMediaError)
+ const updateCallFlagsOnceLocalMediaStarted = (constraints) => {
+ webrtc.off('localMediaStarted', updateCallFlagsOnceLocalMediaStarted)
+ webrtc.off('localMediaError', updateCallFlagsOnceLocalMediaError)
startedWithMedia = true
@@ -1107,21 +1107,31 @@ export default function initWebRtc(signaling, _callParticipantCollection, _local
}
}
- forceReconnect(signaling, flags)
+ if (signaling.hasFeature('mcu')) {
+ signaling.updateCurrentCallFlags(flags)
+
+ if (!ownPeer) {
+ checkStartPublishOwnPeer(signaling)
+ } else {
+ ownPeer.start()
+ }
+ } else if (!signaling.hasFeature('mcu')) {
+ signaling.updateCurrentCallFlags(flags)
+ }
}
- const forceReconnectOnceLocalMediaError = () => {
- webrtc.off('localMediaStarted', forceReconnectOnceLocalMediaStarted)
- webrtc.off('localMediaError', forceReconnectOnceLocalMediaError)
+ const updateCallFlagsOnceLocalMediaError = () => {
+ webrtc.off('localMediaStarted', updateCallFlagsOnceLocalMediaStarted)
+ webrtc.off('localMediaError', updateCallFlagsOnceLocalMediaError)
startedWithMedia = false
// If the media fails to start there will be no media, so no need to
- // reconnect. A reconnection will happen once the user selects a
- // different device.
+ // update the call flags. The call flags will be updated once the
+ // user selects a different device.
}
- webrtc.on('localMediaStarted', forceReconnectOnceLocalMediaStarted)
- webrtc.on('localMediaError', forceReconnectOnceLocalMediaError)
+ webrtc.on('localMediaStarted', updateCallFlagsOnceLocalMediaStarted)
+ webrtc.on('localMediaError', updateCallFlagsOnceLocalMediaError)
startedWithMedia = undefined
@@ -1438,7 +1448,17 @@ export default function initWebRtc(signaling, _callParticipantCollection, _local
flags |= PARTICIPANT.CALL_FLAG.WITH_VIDEO
}
- forceReconnect(signaling, flags)
+ if (signaling.hasFeature('mcu')) {
+ signaling.updateCurrentCallFlags(flags)
+
+ if (!ownPeer) {
+ checkStartPublishOwnPeer(signaling)
+ } else {
+ ownPeer.start()
+ }
+ } else if (!signaling.hasFeature('mcu')) {
+ signaling.updateCurrentCallFlags(flags)
+ }
})
webrtc.on('localMediaStarted', function(/* configuration */) {