From b70581addc6ee17b295cd2d29bc21c7bf6e02bf6 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 17 May 2019 14:54:27 +0200 Subject: [PATCH] openvidu-browser: IE fix (plugin's RTCIceCandidate) --- .../OpenViduInternal/WebRtcPeer/WebRtcPeer.ts | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts b/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts index 52441b13..cdbdc22b 100644 --- a/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts +++ b/openvidu-browser/src/OpenViduInternal/WebRtcPeer/WebRtcPeer.ts @@ -18,9 +18,6 @@ import freeice = require('freeice'); import uuid = require('uuid'); import platform = require('platform'); -platform['isIonicIos'] = (platform.product === 'iPhone' || platform.product === 'iPad') && platform.ua!!.indexOf('Safari') === -1; -platform['isInternetExplorer'] = platform.name === 'IE' && platform.version !== undefined && parseInt(platform.version) >= 11; -platform['isReactNative'] = navigator.product === 'ReactNative'; export interface WebRtcPeerConfiguration { mediaConstraints: { @@ -69,7 +66,16 @@ export class WebRtcPeer { if (this.pc.signalingState === 'stable') { while (this.iceCandidateList.length > 0) { if (platform['isInternetExplorer']) { - (this.pc).addIceCandidate(this.iceCandidateList.shift(), () => {}, () => {}); + const iceCandidate = this.iceCandidateList.shift(); + if (!!iceCandidate) { + const iceCandidateAuxIE = { + candidate: iceCandidate.candidate, + sdpMid: iceCandidate.sdpMid, + sdpMLineIndex: iceCandidate.sdpMLineIndex + }; + const finalIECandidate = new RTCIceCandidate(iceCandidateAuxIE); + (this.pc).addIceCandidate(finalIECandidate, () => {}, () => {}); + } } else { this.pc.addIceCandidate(this.iceCandidateList.shift()); } @@ -311,10 +317,19 @@ export class WebRtcPeer { case 'stable': if (!!this.pc.remoteDescription) { if (platform['isInternetExplorer']) { - (this.pc).addIceCandidate(iceCandidate, () => resolve(), error => reject(error)); + const iceCandidateAuxIE = { + candidate: iceCandidate.candidate, + sdpMid: iceCandidate.sdpMid, + sdpMLineIndex: iceCandidate.sdpMLineIndex + }; + const finalIECandidate = new RTCIceCandidate(iceCandidateAuxIE); + (this.pc).addIceCandidate(finalIECandidate, () => resolve(), error => reject(error)); } else { this.pc.addIceCandidate(iceCandidate).then(() => resolve()).catch(error => reject(error)); } + } else { + this.iceCandidateList.push(iceCandidate); + resolve(); } break; default: