diff options
author | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2022-02-25 21:28:45 +0100 |
---|---|---|
committer | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2022-02-25 21:28:45 +0100 |
commit | ef643d5cfd8eb31a6d83ba29761c778476a86a09 (patch) | |
tree | 831a6ba440e530c5055f92d2e54da330ecac460d | |
parent | cc3aac057ce756aa6fe7f051574930d369f6d4bb (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.js | 44 |
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 */) { |