@techsee/techsee-media-service 18.6.1 → 19.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/LocalStreamManager.d.ts +1 -0
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +320 -441
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +1 -0
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +53 -95
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +1 -0
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +2 -5
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +1 -0
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +36 -49
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +1 -0
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +687 -937
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +1 -0
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +372 -517
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +1 -0
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +88 -127
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +1 -0
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +357 -503
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +1 -0
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +431 -613
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +1 -0
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +17 -32
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +1 -0
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +189 -245
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +1 -0
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +129 -283
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +1 -0
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +184 -252
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +1 -0
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +3 -10
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.d.ts +1 -0
- package/lib/MediaUtils/index.d.ts.map +1 -1
- package/lib/MediaUtils/index.js +3 -13
- package/lib/MediaUtils/index.js.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.d.ts +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +92 -241
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +143 -312
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js +95 -277
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -1
- package/lib/MultiParty/MediaTracer.d.ts +1 -0
- package/lib/MultiParty/MediaTracer.d.ts.map +1 -1
- package/lib/MultiParty/MediaTracer.js +3 -10
- package/lib/MultiParty/MediaTracer.js.map +1 -1
- package/lib/MultiParty/MultiPartyService.d.ts +1 -0
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/MultiPartyService.js +24 -47
- package/lib/MultiParty/MultiPartyService.js.map +1 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +2 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js +7 -15
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +1 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js +11 -15
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -1
- package/lib/MultiParty/index.d.ts +1 -0
- package/lib/MultiParty/index.d.ts.map +1 -1
- package/lib/MultiParty/index.js +15 -35
- package/lib/MultiParty/index.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +2 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +457 -839
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +1 -0
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js +107 -269
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +1 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +34 -54
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +1 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +40 -77
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +1 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js +20 -28
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +1 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +150 -355
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -1
- package/lib/MultiParty/opentok/trace.d.ts +1 -0
- package/lib/MultiParty/opentok/trace.d.ts.map +1 -1
- package/lib/MultiParty/opentok/trace.js +11 -24
- package/lib/MultiParty/opentok/trace.js.map +1 -1
- package/lib/MultiParty/types.d.ts +1 -0
- package/lib/MultiParty/types.d.ts.map +1 -1
- package/lib/MultiParty/types.js +2 -5
- package/lib/MultiParty/types.js.map +1 -1
- package/lib/MultiParty/utils.d.ts +1 -0
- package/lib/MultiParty/utils.d.ts.map +1 -1
- package/lib/MultiParty/utils.js +5 -15
- package/lib/MultiParty/utils.js.map +1 -1
- package/lib/TechseeMediaStream.d.ts +1 -0
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +53 -61
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/qos/raw-qos.d.ts +29 -0
- package/lib/qos/raw-qos.d.ts.map +1 -0
- package/lib/qos/raw-qos.js +247 -382
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.d.ts +4 -0
- package/lib/webrtc-ie-shim.d.ts.map +1 -0
- package/lib/webrtc-ie-shim.js +1999 -3454
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +42 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["MediaSession/SessionOpentok.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","defineProperty","exports","value","OpentokSession","MediaConstants_1","require","guards_1","MediaSessionBase_1","MediaTracer_1","trace","getMediaTracer","_super","sessionParams","streamFactory","_this","_lastStreamEvents","_session","_credentials","credentials","connect","bind","disconnect","onMediaStreamDestroyed","onMediaStreamRenewed","createStreamForPublishing","createMediaPublisher","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","get","sessionId","enumerable","configurable","connection","connectionId","sessionDisconnect","info","error","Promise","reject","resolve","handleError","off","_a","_sessionParams","apiKey","window","OTSESSION","OT","initSession","on","event","emitEvent","recordingEvents","RECORD_STARTED","RECORD_STOPPED","connectHandler","token","currentSession","_peerConnections","forEach","peerConnection","destroyPeerConnection","clientRole","promises","peerRole","push","destroyPublisherOnPeerConnection","all","then","undefined","mediaStream","replaceStreamTracks","Error","getRemoteTrackStats","mediaTrack","peerConnectionOfTrack","getPeerConnectionByMediaTrack","subscriber","getStats","stats","warn","trackId","id","trackStats","sessionExistsGuard","destinationRole","JSON","parse","data","ownPeerId","streams","peerId","peerType","clientType","SessionClientType","INITIATOR","GUEST","publisher","remoteMediaTracks","localStream","connectionTimoutPrt","videoSource","audioSource","set","reduce","promiseChain","streamEvent","publish","has","stream","createMediaSubscriber","destroySubscriberOnPeerConnection","shouldCreateStream","_sessionStreamsManager","getMediaStreamForRole","getTracks","track","kind","SessionClientRole","USER","otParams","publishAudio","publishVideo","showControls","insertDefaultUI","otPublisher","initPublisher","preventDefault","element","muted","hasAudio","unpublish","remoteStream","subscribe","err","otMediaStream","srcObject","addRemoteTrackToPeer","registerPeersRemoteTracks","unsubscribe","shouldThrow","connected","throwableGuard","MediaSessionBase"],"mappings":"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","file":"SessionOpentok.js","sourcesContent":["\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OpentokSession = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar guards_1 = require(\"@techsee/techsee-common/lib/core/guards\");\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar trace = MediaTracer_1.getMediaTracer('OpentokSession');\n//Currently this version supports subscribing only. Publishing will be implemented as needed.\nvar OpentokSession = /** @class */ (function (_super) {\n __extends(OpentokSession, _super);\n function OpentokSession(sessionParams, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this._lastStreamEvents = [];\n _this._session = null;\n _this._credentials = sessionParams.credentials;\n _this.connect = _this.connect.bind(_this);\n _this.disconnect = _this.disconnect.bind(_this);\n _this.onMediaStreamDestroyed = _this.onMediaStreamDestroyed.bind(_this);\n _this.onMediaStreamRenewed = _this.onMediaStreamRenewed.bind(_this);\n _this.createStreamForPublishing = _this.createStreamForPublishing.bind(_this);\n _this.createMediaPublisher = _this.createMediaPublisher.bind(_this);\n _this.connectionCreatedHandler = _this.connectionCreatedHandler.bind(_this);\n _this.connectionDestroyedHandler = _this.connectionDestroyedHandler.bind(_this);\n _this.streamCreatedHandler = _this.streamCreatedHandler.bind(_this);\n _this.streamDestroyedHandler = _this.streamDestroyedHandler.bind(_this);\n return _this;\n }\n Object.defineProperty(OpentokSession.prototype, \"id\", {\n get: function () {\n return this._session && this._session.sessionId ? this._session.sessionId : '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OpentokSession.prototype, \"ownPeerId\", {\n get: function () {\n return this._session && this._session.connection ? this._session.connection.connectionId : '';\n },\n enumerable: false,\n configurable: true\n });\n OpentokSession.prototype.sessionDisconnect = function () {\n if (this._session) {\n this._session.disconnect();\n }\n };\n OpentokSession.prototype.connect = function () {\n var _this = this;\n trace.info('Connect to session', this._credentials);\n if (this._session) {\n trace.error('Session already exists');\n return Promise.reject('Cannot connect to session while another session is active');\n }\n return new Promise(function (resolve, reject) {\n var handleError = function (error) {\n _this._session && _this._session.off();\n _this._session = null;\n trace.error('handleConnect error:', error);\n reject(error);\n };\n var _a = _this._sessionParams.credentials, apiKey = _a.apiKey, sessionId = _a.sessionId;\n _this._session = window.OTSESSION = window.OT.initSession(apiKey, sessionId);\n _this._lastStreamEvents = [];\n _this._session.on('connectionCreated', _this.connectionCreatedHandler);\n _this._session.on('connectionDestroyed', _this.connectionDestroyedHandler);\n _this._session.on('streamCreated', _this.streamCreatedHandler);\n _this._session.on('streamDestroyed', _this.streamDestroyedHandler);\n _this._session.on('archiveStarted', function (event) {\n trace.info('archiveStarted event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STARTED, event);\n });\n _this._session.on('archiveStopped', function (event) {\n trace.info('archiveStopped event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STOPPED, event);\n });\n var connectHandler = function (error) {\n if (error) {\n handleError(error);\n return;\n }\n resolve();\n };\n _this._session.connect(_this._credentials.token, connectHandler);\n });\n };\n OpentokSession.prototype.disconnect = function () {\n var _this = this;\n return new Promise(function (resolve) {\n trace.info('Disconnecting from session');\n var currentSession = _this._session;\n _this._session = null;\n _this._peerConnections.forEach(function (peerConnection) {\n _this.destroyPeerConnection(peerConnection);\n });\n if (!currentSession) {\n trace.info('No active session - resolving');\n resolve();\n return;\n }\n currentSession.off();\n currentSession.disconnect();\n _this._lastStreamEvents = [];\n trace.info('Disconnection from session completed');\n resolve();\n });\n };\n OpentokSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n var promises = [];\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnection.peerRole === clientRole) {\n promises.push(_this.destroyPublisherOnPeerConnection(peerConnection));\n }\n });\n return Promise.all(promises).then(function () { return undefined; });\n };\n OpentokSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation (in OT API)\n return Promise.resolve();\n };\n OpentokSession.prototype.replaceStreamTracks = function (mediaStream) {\n return Promise.reject(new Error('Not implemented'));\n };\n OpentokSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var peerConnectionOfTrack = _this.getPeerConnectionByMediaTrack(mediaTrack);\n if (!peerConnectionOfTrack || !peerConnectionOfTrack.subscriber) {\n reject(new Error('Cannot find peer or subscriber for getting stats'));\n return;\n }\n //https://tokbox.com/developer/sdks/js/reference/Subscriber.html#getStats\n peerConnectionOfTrack.subscriber.getStats(function (error, stats) {\n if (error) {\n trace.warn('Error getting stats', error);\n resolve({ trackId: mediaTrack.id, trackStats: {} });\n return;\n }\n resolve({ trackId: mediaTrack.id, trackStats: stats });\n });\n });\n };\n //#region OpenTok Events Handlers\n OpentokSession.prototype.connectionCreatedHandler = function (event) {\n var _this = this;\n trace.info('connectionCreatedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n var destinationRole = JSON.parse(connection.data).clientRole;\n this.createStreamForPublishing(destinationRole, connection.connectionId === this.ownPeerId)\n .then(function (streams) {\n var peerConnection = {\n peerId: connection.connectionId,\n peerRole: destinationRole,\n peerType: _this._sessionParams.clientType === MediaConstants_1.SessionClientType.INITIATOR\n ? MediaConstants_1.SessionClientType.GUEST\n : MediaConstants_1.SessionClientType.INITIATOR,\n connection: connection,\n publisher: null,\n subscriber: null,\n remoteMediaTracks: [],\n localStream: streams,\n connectionTimoutPrt: null\n };\n if (connection.connectionId !== _this.ownPeerId || (!streams.videoSource && !streams.audioSource)) {\n trace.info('Peer connection without publisher was created', peerConnection);\n return peerConnection;\n }\n return _this.createMediaPublisher(streams).then(function (publisher) {\n peerConnection.publisher = publisher;\n trace.info('Peer connection with publisher was created', peerConnection);\n return peerConnection;\n });\n })\n .then(function (peerConnection) {\n _this._peerConnections.set(peerConnection.peerId, peerConnection);\n if (connection.connectionId === _this.ownPeerId) {\n trace.info('Before subscribe the event streams');\n /*\n When publisher connect after others participants,\n make sure the publisher will not loose their stream to subscribe\n */\n return _this._lastStreamEvents\n .reduce(function (promiseChain, streamEvent) {\n return promiseChain.then(function () { return _this.streamCreatedHandler(streamEvent); });\n }, Promise.resolve())\n .then(function () {\n if (peerConnection.publisher) {\n return new Promise(function (resolve, reject) {\n trace.info('Starting publish to peerConnection.publisher');\n _this._session.publish(peerConnection.publisher, function (error) {\n if (error) {\n trace.error(\"Publish to peerConnection error \" + error);\n return reject(error);\n }\n trace.info('Publish to peerConnection success');\n return resolve();\n });\n });\n }\n return Promise.resolve();\n });\n }\n })\n .catch(function (error) {\n //Need to handle fail cases during reliability\n trace.error(\"Error handling new peer connection: \" + error);\n });\n };\n OpentokSession.prototype.connectionDestroyedHandler = function (event) {\n trace.info('connectionDestroyedHandler', event);\n var connection = event.connection;\n if (!this.sessionExistsGuard(false) || !connection) {\n return;\n }\n if (this._peerConnections.has(connection.connectionId)) {\n this.destroyPeerConnection(this._peerConnections.get(connection.connectionId));\n }\n };\n OpentokSession.prototype.streamCreatedHandler = function (event) {\n trace.info('streamCreatedHandler', event.stream);\n var stream = event.stream;\n var connection = (stream || { connection: null }).connection;\n if (!this.sessionExistsGuard(false) || !stream || connection.connectionId === this.ownPeerId) {\n return;\n }\n if (!this._peerConnections.has(connection.connectionId)) {\n trace.warn('Unexpected case, connection should exist on this stage');\n this._lastStreamEvents.push(event);\n return;\n }\n var peerConnection = this._peerConnections.get(connection.connectionId);\n trace.info('Subscribing the stream');\n this.createMediaSubscriber(stream).then(function (subscriber) {\n peerConnection.subscriber = subscriber;\n });\n };\n OpentokSession.prototype.streamDestroyedHandler = function (event) {\n trace.info('streamDestroyedHandler', event);\n var stream = event.stream;\n if (!this.sessionExistsGuard(false) || !stream) {\n return;\n }\n var peerConnection = this._peerConnections.get(stream.connection.connectionId);\n if (!peerConnection) {\n trace.warn('Peer connection for remote stream not found');\n return;\n }\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {\n return trace.warn('Error destroying subscriber on stream destroy');\n });\n };\n //#endregion\n //#region PeerConnection\n OpentokSession.prototype.destroyPeerConnection = function (peerConnection) {\n this._peerConnections.delete(peerConnection.peerId);\n this.destroyPublisherOnPeerConnection(peerConnection).catch(function () {\n return trace.warn('Error destroying publisher on peer destroy');\n });\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {\n return trace.warn('Error destroying subscriber on peer destroy');\n });\n };\n //#endregion\n //#region Publisher\n OpentokSession.prototype.createStreamForPublishing = function (destinationRole, shouldCreateStream) {\n var _this = this;\n trace.info('createStreamForPublishing');\n var stream = { videoSource: null, audioSource: null };\n if (!shouldCreateStream) {\n trace.info(\"createStreamForPublishing - destinationRole: \" + destinationRole + \" not supposed to create a stream\");\n return Promise.resolve(stream);\n }\n return this._sessionStreamsManager\n .getMediaStreamForRole(destinationRole)\n .then(function (mediaStream) {\n if (mediaStream) {\n trace.info('Media stream found for publishing', mediaStream);\n mediaStream.getTracks().forEach(function (track) {\n if (track.kind === 'video') {\n stream.videoSource = track;\n }\n else if (track.kind === 'audio') {\n stream.audioSource = track;\n }\n });\n }\n else if (_this._sessionParams.clientRole === MediaConstants_1.SessionClientRole.USER) {\n trace.warn('No local media was found for publishing to destinationRole:', destinationRole);\n }\n return stream;\n });\n };\n OpentokSession.prototype.createMediaPublisher = function (stream) {\n var otParams = {\n videoSource: stream.videoSource ? stream.videoSource : false,\n audioSource: stream.audioSource ? stream.audioSource : false,\n publishAudio: !!stream.audioSource,\n publishVideo: !!stream.videoSource,\n showControls: false,\n insertDefaultUI: false\n };\n return new Promise(function (resolve, reject) {\n var otPublisher = window.OT.initPublisher(undefined, otParams, function (error) {\n if (error) {\n reject(error);\n return;\n }\n otPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n //We preventing the default, in order to prevent stop the stream by OT.\n //We managing streams by ourselves and if we allow OT to close the stream, it cannot be reused.\n event.preventDefault();\n });\n otPublisher.on('videoElementCreated', function (event) {\n event.element.muted = true;\n });\n otPublisher.on('streamCreated', function (event) {\n trace.info('publisher stream created', event, otPublisher.stream.hasAudio);\n });\n resolve(otPublisher);\n });\n });\n };\n OpentokSession.prototype.destroyPublisherOnPeerConnection = function (peerConnection) {\n if (this.sessionExistsGuard(false) && peerConnection.publisher) {\n this._session.unpublish(peerConnection.publisher);\n }\n peerConnection.publisher = null;\n peerConnection.localStream = null;\n return Promise.resolve();\n };\n //#endregion\n //#region Subscriber\n OpentokSession.prototype.createMediaSubscriber = function (remoteStream) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (!_this.sessionExistsGuard(false)) {\n reject('Session not exists');\n return;\n }\n var subscriber = _this._session.subscribe(remoteStream, null, { insertDefaultUI: false }, function (err) {\n if (err) {\n trace.warn('Error creating subscriber', err);\n reject(err);\n return;\n }\n subscriber.on('videoElementCreated', function (event) {\n var element = event.element;\n var peerConnection = _this._peerConnections.get(remoteStream.connection.connectionId);\n var otMediaStream = element.srcObject;\n peerConnection.subscriber = subscriber;\n if (!otMediaStream) {\n trace.warn('MediaStream not found in OT video element');\n return;\n }\n trace.info('Registering remote media tracks', peerConnection.subscriber, otMediaStream);\n otMediaStream.getTracks().forEach(function (mediaTrack) {\n _this.addRemoteTrackToPeer(peerConnection, mediaTrack);\n });\n _this.registerPeersRemoteTracks(peerConnection);\n });\n resolve(subscriber);\n });\n });\n };\n OpentokSession.prototype.destroySubscriberOnPeerConnection = function (peerConnection) {\n if (this.sessionExistsGuard(false) && peerConnection.subscriber) {\n this._session.unsubscribe(peerConnection.subscriber);\n }\n peerConnection.subscriber = null;\n return Promise.resolve();\n /**\n REMARK- opentok provide the same media track id for all participates.\n when we unregister the media track we check by the id which is the same for all.\n **/\n // return this.unregisterPeersRemoteMediaTracks(peerConnection)\n // .catch(() => trace.warn('Error removing remote streams from peerConnection'))\n // .then(() => {\n // peerConnection.subscriber = null;\n // });\n };\n //#endregion\n OpentokSession.prototype.sessionExistsGuard = function (shouldThrow) {\n if (shouldThrow === void 0) { shouldThrow = true; }\n var connected = !!(this._session && this._session.connection && this._session.connection.connectionId);\n return guards_1.throwableGuard(connected, 'There no OpenTok session exists', shouldThrow);\n };\n return OpentokSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.OpentokSession = OpentokSession;\n\n//# sourceMappingURL=SessionOpentok.js.map\n"]}
|
|
1
|
+
{"version":3,"file":"SessionOpentok.js","sourceRoot":"","sources":["../../src/MediaSession/SessionOpentok.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAUA,oDAAuE;AACvE,kEAAuE;AACvE,uDAAwF;AACxF,yDAAyD;AAEzD,IAAM,KAAK,GAAG,IAAA,4BAAc,EAAC,gBAAgB,CAAC,CAAC;AAyD/C;IAAoC,kCAAkC;IAalE,wBAAY,aAA6D,EAAE,aAAqC;QAAhH,YACI,kBAAM,aAAa,EAAE,aAAa,CAAC,SAetC;QA3BO,uBAAiB,GAAU,EAAE,CAAC;QAC9B,cAAQ,GAAyB,IAAI,CAAC;QAa1C,KAAI,CAAC,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC;QAE9C,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACvC,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC7C,KAAI,CAAC,sBAAsB,GAAG,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACrE,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAEjE,KAAI,CAAC,yBAAyB,GAAG,KAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC3E,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACjE,KAAI,CAAC,wBAAwB,GAAG,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACzE,KAAI,CAAC,0BAA0B,GAAG,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QAC7E,KAAI,CAAC,oBAAoB,GAAG,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;QACjE,KAAI,CAAC,sBAAsB,GAAG,KAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;IACzE,CAAC;IAxBD,sBAAI,8BAAE;aAAN;YACI,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,CAAC;;;OAAA;IAED,sBAAY,qCAAS;aAArB;YACI,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAClG,CAAC;;;OAAA;IAoBD,0CAAiB,GAAjB;QACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;SAC9B;IACL,CAAC;IAED,gCAAO,GAAP;QAAA,iBAgDC;QA/CG,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,KAAK,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAEtC,OAAO,OAAO,CAAC,MAAM,CAAC,2DAA2D,CAAC,CAAC;SACtF;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAM,WAAW,GAAG,UAAC,KAAU;gBAC3B,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAS,CAAC,GAAG,EAAE,CAAC;gBACtC,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,KAAK,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;YAEI,IAAA,KAAsB,KAAI,CAAC,cAAc,CAAC,WAAW,EAApD,MAAM,YAAA,EAAE,SAAS,eAAmC,CAAC;YAE5D,KAAI,CAAC,QAAQ,GAAI,MAAc,CAAC,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACrF,KAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAE5B,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAI,CAAC,wBAAwB,CAAC,CAAC;YACtE,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,qBAAqB,EAAE,KAAI,CAAC,0BAA0B,CAAC,CAAC;YAC1E,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,eAAe,EAAE,KAAI,CAAC,oBAAoB,CAAC,CAAC;YAC9D,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAI,CAAC,sBAAsB,CAAC,CAAC;YAClE,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,KAAU;gBAC3C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC1C,KAAI,CAAC,SAAS,CAAC,kCAAe,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,QAAS,CAAC,EAAE,CAAC,gBAAgB,EAAE,UAAC,KAAU;gBAC3C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;gBAC1C,KAAI,CAAC,SAAS,CAAC,kCAAe,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAM,cAAc,GAAG,UAAC,KAAU;gBAC9B,IAAI,KAAK,EAAE;oBACP,WAAW,CAAC,KAAK,CAAC,CAAC;oBAEnB,OAAO;iBACV;gBAED,OAAO,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,KAAI,CAAC,QAAS,CAAC,OAAO,CAAC,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mCAAU,GAAV;QAAA,iBAyBC;QAxBG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO;YACvB,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACzC,IAAM,cAAc,GAAG,KAAI,CAAC,QAAQ,CAAC;YAErC,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,KAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,cAAc;gBACzC,KAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBAC5C,OAAO,EAAE,CAAC;gBAEV,OAAO;aACV;YACD,cAAc,CAAC,GAAG,EAAE,CAAC;YACrB,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,KAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAE5B,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAEnD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+CAAsB,GAAtB,UAAuB,UAA6B;QAApD,iBAUC;QATG,IAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,cAAc;YACzC,IAAI,cAAc,CAAC,QAAQ,KAAK,UAAU,EAAE;gBACxC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC,CAAC;aACxE;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC,CAAC;IACvD,CAAC;IAED,6CAAoB,GAApB,UAAqB,UAA6B,EAAE,WAAwB;QAExE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4CAAmB,GAAnB,UAAoB,WAAkC;QAClD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,4CAAmB,GAAnB,UAAoB,UAA4B;QAAhD,iBAsBC;QArBG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAY,EAAE,MAAW;YACzC,IAAM,qBAAqB,GAAG,KAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;YAE7E,IAAI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;gBAC7D,MAAM,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC;gBAEtE,OAAO;aACV;YAGD,qBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAC,KAAU,EAAE,KAAU;gBAC9D,IAAI,KAAK,EAAE;oBACP,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;oBACzC,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAC,CAAC,CAAC;oBAElD,OAAO;iBACV;gBAED,OAAO,CAAC,EAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAIO,iDAAwB,GAAhC,UAAiC,KAAU;QAA3C,iBAkFC;QAjFG,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACvC,IAAA,UAAU,GAAI,KAAK,WAAT,CAAU;QAE3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAChD,OAAO;SACV;QAED,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;QAE/D,IAAI,CAAC,yBAAyB,CAAC,eAAe,EAAE,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,CAAC;aACtF,IAAI,CAAC,UAAC,OAAuB;YAC1B,IAAM,cAAc,GAAqB;gBACrC,MAAM,EAAE,UAAU,CAAC,YAAY;gBAC/B,QAAQ,EAAE,eAAe;gBACzB,QAAQ,EACJ,KAAI,CAAC,cAAc,CAAC,UAAU,KAAK,kCAAiB,CAAC,SAAS;oBAC1D,CAAC,CAAC,kCAAiB,CAAC,KAAK;oBACzB,CAAC,CAAC,kCAAiB,CAAC,SAAS;gBACrC,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,IAAI;gBAChB,iBAAiB,EAAE,EAAE;gBACrB,WAAW,EAAE,OAAO;gBACpB,mBAAmB,EAAE,IAAI;aAC5B,CAAC;YAEF,IAAI,UAAU,CAAC,YAAY,KAAK,KAAI,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;gBAC9F,KAAK,CAAC,IAAI,CAAC,+CAA+C,EAAE,cAAc,CAAC,CAAC;gBAE5E,OAAO,cAAc,CAAC;aACzB;YAED,OAAO,KAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAC,SAAsB;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,4CAA4C,EAAE,cAAc,CAAC,CAAC;gBAEzE,OAAO,cAAc,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,IAAI,CAAC,UAAC,cAAgC;YACnC,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAEjE,IAAI,UAAU,CAAC,YAAY,KAAK,KAAI,CAAC,SAAS,EAAE;gBAC5C,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAMjD,OAAO,KAAI,CAAC,iBAAiB;qBACxB,MAAM,CACH,UAAC,YAAiB,EAAE,WAAgB;oBAChC,OAAA,YAAY,CAAC,IAAI,CAAC,cAAM,OAAA,KAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAtC,CAAsC,CAAC;gBAA/D,CAA+D,EACnE,OAAO,CAAC,OAAO,EAAE,CACpB;qBACA,IAAI,CAAC;oBACF,IAAI,cAAc,CAAC,SAAS,EAAE;wBAC1B,OAAO,IAAI,OAAO,CAAO,UAAC,OAAO,EAAE,MAAM;4BACrC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;4BAC3D,KAAI,CAAC,QAAS,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,UAAC,KAAU;gCACxD,IAAI,KAAK,EAAE;oCACP,KAAK,CAAC,KAAK,CAAC,0CAAmC,KAAK,CAAE,CAAC,CAAC;oCAExD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;iCACxB;gCAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gCAEhD,OAAO,OAAO,EAAE,CAAC;4BACrB,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;qBACN;oBAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC7B,CAAC,CAAC,CAAC;aACV;QACL,CAAC,CAAC;aACD,KAAK,CAAC,UAAC,KAAU;YAEd,KAAK,CAAC,KAAK,CAAC,8CAAuC,KAAK,CAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,mDAA0B,GAAlC,UAAmC,KAAU;QACzC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACzC,IAAA,UAAU,GAAI,KAAK,WAAT,CAAU;QAE3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAChD,OAAO;SACV;QAED,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACpD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC,CAAC;SACnF;IACL,CAAC;IAEO,6CAAoB,GAA5B,UAA6B,KAAU;QACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAA,MAAM,GAAI,KAAK,OAAT,CAAU;QAChB,IAAA,UAAU,GAAI,CAAA,MAAM,IAAI,EAAC,UAAU,EAAE,IAAI,EAAC,CAAA,WAAhC,CAAiC;QAElD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,YAAY,KAAK,IAAI,CAAC,SAAS,EAAE;YAC1F,OAAO;SACV;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACrD,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEnC,OAAO;SACV;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;QAE3E,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAErC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,UAAwB;YAC7D,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,+CAAsB,GAA9B,UAA+B,KAAU;QACrC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACrC,IAAA,MAAM,GAAI,KAAK,OAAT,CAAU;QAEvB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YAC5C,OAAO;SACV;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEjF,IAAI,CAAC,cAAc,EAAE;YACjB,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAE1D,OAAO;SACV;QAED,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACzD,OAAA,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC;QAA3D,CAA2D,CAC9D,CAAC;IACN,CAAC;IAMO,8CAAqB,GAA7B,UAA8B,cAAgC;QAC1D,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACxD,OAAA,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC;QAAxD,CAAwD,CAC3D,CAAC;QACF,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;YACzD,OAAA,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC;QAAzD,CAAyD,CAC5D,CAAC;IACN,CAAC;IAMO,kDAAyB,GAAjC,UACI,eAAkC,EAClC,kBAA2B;QAF/B,iBAiCC;QA7BG,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,IAAM,MAAM,GAAmB,EAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC;QAEtE,IAAI,CAAC,kBAAkB,EAAE;YACrB,KAAK,CAAC,IAAI,CACN,uDAAgD,eAAe,qCAAkC,CACpG,CAAC;YAEF,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,OAAO,IAAI,CAAC,sBAAsB;aAC7B,qBAAqB,CAAC,eAAe,CAAC;aACtC,IAAI,CAAC,UAAC,WAAkC;YACrC,IAAI,WAAW,EAAE;gBACb,KAAK,CAAC,IAAI,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;gBAC7D,WAAW,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;oBAClC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;wBACxB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;qBAC9B;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;wBAC/B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;qBAC9B;gBACL,CAAC,CAAC,CAAC;aACN;iBAAM,IAAI,KAAI,CAAC,cAAc,CAAC,UAAU,KAAK,kCAAiB,CAAC,IAAI,EAAE;gBAClE,KAAK,CAAC,IAAI,CAAC,6DAA6D,EAAE,eAAe,CAAC,CAAC;aAC9F;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,6CAAoB,GAA5B,UAA6B,MAAsB;QAC/C,IAAM,QAAQ,GAAG;YACb,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;YAC5D,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK;YAC5D,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW;YAClC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW;YAClC,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;SACzB,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAM,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAC,KAAU;gBACxE,IAAI,KAAK,EAAE;oBACP,MAAM,CAAC,KAAK,CAAC,CAAC;oBAEd,OAAO;iBACV;gBACD,WAAW,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAC,KAAU;oBACzC,KAAK,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;oBAGhD,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBACH,WAAW,CAAC,EAAE,CAAC,qBAAqB,EAAE,UAAC,KAAU;oBAC7C,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBACH,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,UAAC,KAAU;oBACvC,KAAK,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC/E,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,yDAAgC,GAAxC,UAAyC,cAAgC;QACrE,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,SAAS,EAAE;YAC5D,IAAI,CAAC,QAAS,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;SACtD;QAED,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;QAChC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;QAElC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAMO,8CAAqB,GAA7B,UAA8B,YAAiB;QAA/C,iBA6CC;QA5CG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAY,EAAE,MAAW;YACzC,IAAI,CAAC,KAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBACjC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAE7B,OAAO;aACV;YAED,IAAM,UAAU,GAAiB,KAAI,CAAC,QAAS,CAAC,SAAS,CACrD,YAAY,EACZ,IAAI,EACJ,EAAC,eAAe,EAAE,KAAK,EAAC,EACxB,UAAC,GAAQ;gBACL,IAAI,GAAG,EAAE;oBACL,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,CAAC,CAAC;oBAEZ,OAAO;iBACV;gBAED,UAAU,CAAC,EAAE,CAAC,qBAAqB,EAAE,UAAC,KAAU;oBACrC,IAAA,OAAO,GAAI,KAAK,QAAT,CAAU;oBACxB,IAAM,cAAc,GAAG,KAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAE,CAAC;oBACxF,IAAM,aAAa,GAAgB,OAAO,CAAC,SAAS,CAAC;oBAErD,cAAc,CAAC,UAAU,GAAG,UAAU,CAAC;oBAEvC,IAAI,CAAC,aAAa,EAAE;wBAChB,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;wBAExD,OAAO;qBACV;oBAED,KAAK,CAAC,IAAI,CAAC,iCAAiC,EAAE,cAAc,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;oBACxF,aAAa,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,UAAC,UAA4B;wBAC3D,KAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;oBAC1D,CAAC,CAAC,CAAC;oBAEH,KAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,0DAAiC,GAAzC,UAA0C,cAAgC;QACtE,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,UAAU,EAAE;YAC7D,IAAI,CAAC,QAAS,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;SACzD;QAED,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC;QAEjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAW7B,CAAC;IAIO,2CAAkB,GAA1B,UAA2B,WAAkB;QAAlB,4BAAA,EAAA,kBAAkB;QACzC,IAAM,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEzG,OAAO,IAAA,uBAAc,EAAC,SAAS,EAAE,iCAAiC,EAAE,WAAW,CAAC,CAAC;IACrF,CAAC;IACL,qBAAC;AAAD,CAAC,AAjeD,CAAoC,mCAAgB,GAienD;AAjeY,wCAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/MediaSession/SessionTurn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAiD,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAWvH,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAKpD,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,iBAAiB,CAAE,YAAW,aAAa;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IACrC,OAAO,CAAC,OAAO,CAAM;IAErB,IAAI,EAAE,IAAI,MAAM,CAEf;gBAGG,aAAa,EAAE,kBAAkB,GAAG,yBAAyB,EAC7D,eAAe,EAAE,oBAAoB,EACrC,aAAa,EAAE,sBAAsB;IA6BzC,OAAO,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiChE,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiBlD,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtE,iBAAiB,CAAC,kBAAkB,EAAE,GAAG,GAAG,IAAI;IAuDhD,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI;IAyBjD,wBAAwB,CAAC,qBAAqB,EAAE,GAAG,GAAG,IAAI;IAgB1D,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;IAoD1C,8BAA8B,IAAI,IAAI;IAgBtC,sBAAsB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5F,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY5E,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,qBAAqB;IAoE7B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAY3B,4BAA4B,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI;IAuBzD,sBAAsB,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvG,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAejD,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvE,qBAAqB,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI;IAS9D,iBAAiB,IAAI,IAAI;CAM5B","file":"SessionTurn.d.ts","sourcesContent":["import * as io from 'socket.io-client';\nimport once from 'lodash/once';\nimport {Nullable} from '@techsee/techsee-common';\n\nimport {\n IMediaSession,\n ISessionStreamsManager,\n MediaSessionConfiguration,\n MediaSessionHandlers,\n MediaSessionParams,\n RemoteMediaTrack,\n RemoteTrackStats\n} from '../MediaContracts';\n\nimport {KnownMediaStream, MediaSessionDisconnectReason, SessionClientRole, SessionClientType} from '../MediaConstants';\n\nimport {\n SOCKET_EVENTS,\n SOCKET_PATH,\n SOCKET_RECONNECTION_ATTEMPTS,\n SOCKET_RECONNECTION_DELAY,\n SOCKET_RECONNECTION_DELAY_MAX\n} from './TurnConstants';\n\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {MediaSessionBase} from './MediaSessionBase';\n\nconst trace = getMediaTracer('TurnWebRtcSession');\n\n//Currently this version supports subscribing only. Publishing will be implemented as needed.\nexport class TurnWebRtcSession extends MediaSessionBase<RTCPeerConnection> implements IMediaSession {\n private readonly _sessionHandlers: MediaSessionHandlers;\n private readonly _pendingPeersIce: any;\n private readonly _configuration: any;\n private _socket: any;\n\n get id(): string {\n return this._sessionParams.sessionId;\n }\n\n constructor(\n sessionParams: MediaSessionParams & MediaSessionConfiguration,\n sessionHandlers: MediaSessionHandlers,\n streamFactory: ISessionStreamsManager\n ) {\n super(sessionParams, streamFactory);\n this._sessionHandlers = sessionHandlers;\n this._socket = null;\n this._pendingPeersIce = {};\n\n const iceServers = sessionParams.credentials.ice.map((item: any) => ({\n urls: item.url,\n username: item.login,\n credential: item.password\n }));\n\n this._configuration = {\n iceServers,\n iceTransportPolicy: 'relay'\n };\n\n this._joinResponseHandler = this._joinResponseHandler.bind(this);\n this._iceCandidateReceivedHandler = this._iceCandidateReceivedHandler.bind(this);\n this._sendOfferHandler = this._sendOfferHandler.bind(this);\n this._sdpOfferHandler = this._sdpOfferHandler.bind(this);\n this._initiatorPeerReconnectHandler = this._initiatorPeerReconnectHandler.bind(this);\n this._peerDisconnectedHandler = this._peerDisconnectedHandler.bind(this);\n this._onSocketDisconnectedHandler = this._onSocketDisconnectedHandler.bind(this);\n }\n\n //#region Socket Connectivity\n\n connect(connectOnly = false): Promise<void> {\n trace.info('Connect to session');\n\n return this._connectSocket(this._sessionParams.credentials.url, connectOnly)\n .then(() => {\n trace.info('Joining SessionId: ' + this._sessionParams.sessionId);\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.JOIN_ROOM, {\n clientType: this._sessionParams.clientType,\n sessionId: this._sessionParams.sessionId\n });\n })\n .catch((error) => {\n throw error;\n });\n }\n\n disconnect(): Promise<void> {\n trace.info('disconnect - call disconnect from session', MediaSessionDisconnectReason.ForcedByConsumer);\n\n return this._disconnectInternal(MediaSessionDisconnectReason.ForcedByConsumer);\n }\n\n _connectSocket(url: string, connectOnly: boolean): Promise<void> {\n return new Promise((resolve, reject) => {\n const socket = (this._socket = io.connect(url, {\n forceNew: true,\n reconnectionDelay: SOCKET_RECONNECTION_DELAY,\n reconnectionDelayMax: SOCKET_RECONNECTION_DELAY_MAX,\n reconnectionAttempts: SOCKET_RECONNECTION_ATTEMPTS,\n path: SOCKET_PATH\n }));\n\n const done = once((err?: any) => {\n err ? reject(err) : resolve();\n });\n\n socket.once('connect', () => done());\n socket.on(SOCKET_EVENTS.INCOMING.ERROR, done);\n socket.on('connect_error', done);\n socket.on('connect_timeout', done);\n socket.on('disconnect', this._onSocketDisconnectedHandler);\n\n if (!connectOnly) {\n trace.info('Subscribing socket events');\n\n socket.on(SOCKET_EVENTS.INCOMING.SEND_OFFER, this._sendOfferHandler);\n socket.on(SOCKET_EVENTS.INCOMING.JOIN_RESPONSE, this._joinResponseHandler);\n socket.on(SOCKET_EVENTS.INCOMING.PEER_DISCONNECTED, this._peerDisconnectedHandler);\n socket.on(SOCKET_EVENTS.INCOMING.SDP_OFFER, this._sdpOfferHandler);\n socket.on(SOCKET_EVENTS.INCOMING.PUBLISHER_RECONNECT, this._initiatorPeerReconnectHandler);\n socket.on(SOCKET_EVENTS.INCOMING.ICE_CANDIDATE, this._iceCandidateReceivedHandler);\n }\n });\n }\n\n _onSocketDisconnectedHandler(reason: string): void {\n if (this._socket) {\n // The initial example of differentiating between \"forced\" disconnect and \"network\" disconnect is taken from:\n // https://socket.io/docs/client-api/#Event-%E2%80%98disconnect%E2%80%99\n if (reason !== 'io server disconnect' && reason !== 'io client disconnect') {\n trace.info(\n '_onSocketDisconnectedHandler disconnect from session',\n MediaSessionDisconnectReason.SignalingChannelDisconnect\n );\n // the disconnection was initiated by the server or by client, you need to call (connect) manually\n this._disconnectInternal(MediaSessionDisconnectReason.SignalingChannelDisconnect).catch(\n () => undefined\n );\n }\n }\n }\n\n replaceStreamTracks(mediaStream: Nullable<MediaStream>): Promise<void> {\n const promises: any[] = [];\n\n if (mediaStream && this._peerConnections) {\n trace.info('replaceStreamTracks - Replace local tracks to peer connection');\n\n this._peerConnections.forEach((peerConnection: RTCPeerConnection) => {\n mediaStream.getTracks().forEach((track) => {\n const sender = peerConnection.getSenders().find((s: any) => s.track.kind === track.kind);\n\n if (sender) {\n promises.push(\n sender\n .replaceTrack(track)\n .then(() =>\n trace.info(\n `replaceStreamTracks - Local ${track.kind} ${track.id} track replace to peer connection`\n )\n )\n );\n }\n });\n });\n }\n\n return Promise.all(promises).then(() => {\n window.mediaStreamAlreadyReplaced = true;\n trace.info('replaceStreamTracks: replace stream tracks - Success');\n });\n }\n\n //#endregion\n\n //#region WebRTC Initiator - session Initiator (User on mobile device)\n\n // Received by Initiator, causing him to emit SDP_OFFER\n _sendOfferHandler(sendOfferEventData: any): void {\n const {uid, peerId} = sendOfferEventData;\n\n trace.info('_sendOfferHandler');\n\n //Currently we not support of passing role through signaling, so we assume every connection is \"AGENT\" like\n const peerConnection = this._createPeerConnection(peerId, SessionClientType.GUEST, SessionClientRole.AGENT);\n const offerParams = {offerToReceiveAudio: true, offerToReceiveVideo: true};\n\n //TODO - Alex: Currently we not sending \"role\" through signaling, and by default we assume that the one who asks fot offer, is agent.\n //On later stages we can send or the client \"role\" or the list of \"streams\" that peer is interested in.\n this._sessionStreamsManager\n .getMediaStreamForRole(SessionClientRole.AGENT)\n .then((mediaStream: Nullable<MediaStream>) => {\n trace.info('_sendOfferHandler stream and peer created');\n\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection for sending offer');\n mediaStream.getTracks().forEach((track) => {\n peerConnection.addTrack(track, mediaStream);\n trace.info(`Local ${track.kind} ${track.id} track added to peer connection`);\n });\n } else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(() => peerConnection.createOffer(offerParams))\n .then((offerDesc) => {\n trace.info('Initiator has created sdp offer', {offerDesc});\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.SDP_OFFER, {\n uid,\n peerId,\n sessionId: this._sessionParams.sessionId,\n sdpOffer: offerDesc.sdp\n });\n\n return peerConnection.setLocalDescription(offerDesc).then(() => {\n trace.info('Local description was set on peerConnection', peerConnection);\n this._setPeerConnectionMonitor(peerConnection);\n\n // make sure using the tracks of the last stream that used\n if (window.latestUserMediaStream && window.mediaStreamAlreadyReplaced) {\n this.replaceStreamTracks(window.latestUserMediaStream.mediaStream).catch((e) =>\n trace.warn('_sendOfferHandler - Failed to replaceStreamTrace', e)\n );\n }\n });\n })\n .catch((e) => {\n trace.warn('Error', e);\n });\n }\n\n // Received by the Initiator: Indicates that publish should be started\n _joinResponseHandler(joinResponseData: any): void {\n const {sdpAnswer, uid, peerId} = joinResponseData;\n\n trace.info('joinResponse Received', {sdpAnswer});\n\n this._withPeerConnection(peerId, (peerConnection: RTCPeerConnection) => {\n const answer = new RTCSessionDescription({\n type: 'answer',\n sdp: sdpAnswer\n });\n\n peerConnection\n .setRemoteDescription(answer)\n .then(() => {\n trace.info('Remote description was set', answer);\n\n this._processQueuedIceCandidates(peerId);\n })\n .catch((e) => {\n trace.warn('Error', e);\n });\n });\n }\n\n // Received by Initiator after a guests socket has been disconnected\n _peerDisconnectedHandler(peerDisconnectedEvent: any): void {\n const {peerId} = peerDisconnectedEvent;\n\n trace.info('_peerDisconnectedHandler');\n\n this._withPeerConnection(peerId, (peerConnection: any) => {\n this._destroyPeerConnection(peerConnection);\n //this._disconnectInternal(MediaSessionDisconnectReason.PeerDisconnected).catch(() => undefined);\n });\n }\n\n //#endregion WebRTC Initiator - session Initiator (User on mobile device)\n\n //#region WebRTC Guest - session Guest (Agent on dashboard platform)\n\n // Received by Guest, causing him to emit SDP_ANSWER\n _sdpOfferHandler(sdpOfferEvent: any): void {\n const {sdpOffer, peerId, uid} = sdpOfferEvent;\n\n trace.info('sdpOffer Received', {sdpOffer});\n\n const peerConnection = this._createPeerConnection(peerId, SessionClientType.INITIATOR, SessionClientRole.USER);\n\n this._sessionStreamsManager\n .getMediaStreamForRole(SessionClientRole.USER)\n .then((mediaStream: Nullable<MediaStream>) => {\n if (mediaStream) {\n trace.info('Adding local tracks to peer connection offer handler');\n mediaStream.getTracks().forEach((track) => {\n peerConnection.addTrack(track, mediaStream);\n trace.info(`Local ${track.kind} track added to peer connection`);\n });\n } else {\n trace.info('No media stream was found for publishing');\n }\n })\n .then(() => {\n const remoteDesc = new RTCSessionDescription({type: 'offer', sdp: sdpOffer});\n\n return peerConnection.setRemoteDescription(remoteDesc).then(() => {\n trace.info('Remote description was set', remoteDesc);\n\n return peerConnection.createAnswer().then((sdpAnswer) => {\n trace.info('_sdpOfferHandler answer created', sdpAnswer);\n\n this._socket.emit(SOCKET_EVENTS.OUTGOING.SDP_ANSWER, {\n uid,\n peerId,\n sessionId: this._sessionParams.sessionId,\n sdpAnswer: sdpAnswer.sdp\n });\n\n return peerConnection.setLocalDescription(sdpAnswer).then(() => {\n trace.info('_sdpOfferHandler local desc was set');\n\n this._processQueuedIceCandidates(peerId);\n this._setPeerConnectionMonitor(peerConnection);\n });\n });\n });\n })\n .catch((e) => {\n trace.error('Error in _sdpOfferHandler', e);\n throw e;\n });\n }\n\n // Received by Guest after an Initiator reconnects to room\n _initiatorPeerReconnectHandler(): void {\n trace.info(\n '_initiatorPeerReconnectHandler disconnect from session',\n MediaSessionDisconnectReason.InitiatorPeerReconnected\n );\n this._disconnectInternal(MediaSessionDisconnectReason.InitiatorPeerReconnected).catch((error: any) => {\n trace.warn('Error while disconnecting during userPeerReconnectHandler.', error);\n });\n }\n\n //#endregion WebRTC Guest - session Guest (Agent on dashboard platform)\n\n //#region Peer Connection\n\n //#region Streams Handling\n\n onMediaStreamDestroyed(clientRole: SessionClientRole): Promise<void> {\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n trace.info(\n 'onMediaStreamDestroyed disconnect all peer connections from session',\n MediaSessionDisconnectReason.PublishedStreamDestroyed\n );\n this._peerConnections.forEach((peerConnection: RTCPeerConnection) => {\n this._disconnectInternal(MediaSessionDisconnectReason.PublishedStreamDestroyed).catch(() => undefined);\n });\n\n return Promise.resolve();\n }\n\n onMediaStreamRenewed(clientRole: SessionClientRole, mediaStream: MediaStream): Promise<void> {\n //TODO - Alex: need to implement adding new tracks to peer connection and forcing negotiation\n return Promise.resolve();\n }\n\n getRemoteTrackStats(mediaTrack: MediaStreamTrack): Promise<RemoteTrackStats> {\n const peerConnectionOfTrack = this.getPeerConnectionByMediaTrack(mediaTrack);\n\n if (peerConnectionOfTrack !== null) {\n return (peerConnectionOfTrack as any).getStats(mediaTrack);\n }\n\n return Promise.reject(new Error('Provided track is not remote track'));\n }\n\n //#endregion\n\n private _disconnectInternal(reason: MediaSessionDisconnectReason): Promise<void> {\n this._peerConnections.forEach((peerConnection: RTCPeerConnection) => {\n this._destroyPeerConnection(peerConnection);\n });\n\n if (this._socket) {\n trace.info('Disconnecting from session', reason);\n this.sessionDisconnect();\n this._socket = null;\n setTimeout(() => this._sessionHandlers.onDisconnectedHandler(reason));\n }\n\n return Promise.resolve();\n }\n\n private _createPeerConnection(\n peerId: string,\n peerConnectionType: SessionClientType,\n peerConnectionRole: SessionClientRole\n ): RTCPeerConnection {\n if (this._peerConnections.get(peerId)) {\n throw new Error(`${this._sessionParams.clientType} peer connection for ${peerId} already exists`);\n }\n\n const peerConnection: any = new RTCPeerConnection(this._configuration);\n\n peerConnection.peerId = peerId;\n peerConnection.peerType = peerConnectionType;\n peerConnection.remoteMediaTracks = [];\n peerConnection.peerRole = peerConnectionRole;\n peerConnection.connectionTimoutPrt = null;\n\n peerConnection.onconnectionstatechange = () => {\n trace.info('onconnectionstatechange', peerConnection);\n };\n\n peerConnection.oniceconnectionstatechange = (state: any) => {\n trace.info(\n `ICE Connection state for peer ${peerId} was changed to: ${state.currentTarget.iceConnectionState}`,\n state\n );\n const cnState = state.currentTarget.iceConnectionState;\n\n clearTimeout(peerConnection.connectionTimoutPrt);\n\n if (['closed', 'disconnected', 'failed'].indexOf(cnState) > -1) {\n this._iceStateDisconnected(peerConnection);\n } else if (cnState === 'connected') {\n this.registerPeersRemoteTracks(peerConnection);\n }\n };\n\n peerConnection.onicecandidate = (event: any) => {\n if (event.candidate) {\n trace.info(`${this._sessionParams.clientType} peerConn.onicecandidate`, event.candidate);\n this._socket.emit(SOCKET_EVENTS.OUTGOING.ICE_CANDIDATE, {\n sessionId: this._sessionParams.sessionId,\n peerId: peerId,\n candidate: event.candidate,\n clientType: this._sessionParams.clientType\n });\n } else {\n trace.info('ICE Candidate is null in peerConnection', event);\n }\n };\n\n peerConnection.ontrack = (trackEvent: any) => {\n const track: MediaStreamTrack = trackEvent.track;\n\n trace.info(`MediaStreamTrack arrived from peerConnection: ${track.kind}`, track);\n this.addRemoteTrackToPeer(peerConnection, track);\n if (peerConnection.connectionState === 'connected') {\n this.registerPeersRemoteTracks(peerConnection);\n }\n };\n\n this._peerConnections.set(peerId, peerConnection);\n\n trace.info(`${peerConnectionType} peerConnection created`);\n\n return peerConnection;\n }\n\n private _setPeerConnectionMonitor(peerConnection: RTCPeerConnection) {\n clearTimeout(peerConnection.connectionTimoutPrt);\n peerConnection.connectionTimoutPrt = setTimeout(() => {\n trace.info('PeerConnection ICE state timeout', peerConnection);\n this._handlePeerConnectionTimeout(peerConnection);\n }, this._sessionParams.peerConnectivityTimeoutSeconds * 1000);\n }\n\n private _handlePeerConnectionTimeout(peerConnection: RTCPeerConnection) {\n trace.info(\n '_handlePeerConnectionTimeout disconnect from session',\n MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout\n );\n if (peerConnection.peerRole === SessionClientRole.USER) {\n this._disconnectInternal(MediaSessionDisconnectReason.PeerConnectionStateChangeTimeout).catch(\n () => undefined\n );\n }\n }\n\n private _destroyPeerConnection(peerConnection: RTCPeerConnection): void {\n trace.info('Destroying PeerConnection', peerConnection.peerType);\n peerConnection.ontrack = null;\n peerConnection.onicecandidate = null;\n peerConnection.onconnectionstatechange = null;\n peerConnection.oniceconnectionstatechange = null;\n peerConnection.onicegatheringstatechange = null;\n\n clearTimeout(peerConnection.connectionTimoutPrt);\n this.unregisterPeersRemoteMediaTracks(peerConnection).catch(() => undefined);\n\n this._peerConnections.delete(peerConnection.peerId);\n peerConnection.close();\n }\n\n private _withPeerConnection(peerId: any, callback: any): void | undefined {\n if (this._peerConnections.get(peerId)) {\n return callback(this._peerConnections.get(peerId));\n }\n\n return undefined;\n }\n\n //#endregion\n\n //#region ICE Candidates\n\n _iceCandidateReceivedHandler(iceCandidateData: any): void {\n const {candidate, peerId} = iceCandidateData;\n\n trace.info('_iceCandidateReceivedHandler', candidate);\n if (!candidate) {\n trace.info('Unexpected case, iceCandidate message arrived without candidate');\n\n return;\n }\n\n const peerConnection = this._peerConnections.get(peerId);\n\n if (!peerConnection || !peerConnection.remoteDescription) {\n trace.info('Queueing iceCandidate', candidate);\n this._queueIceCandidate(candidate, peerId);\n\n return;\n }\n\n trace.info('Going to add iceCandidate', candidate);\n this._addIceCandidateToPeer(candidate, peerConnection).catch(() => undefined);\n }\n\n _addIceCandidateToPeer(iceCandidate: RTCIceCandidate, peerConnection: RTCPeerConnection): Promise<void> {\n return peerConnection\n .addIceCandidate(iceCandidate)\n .then(() => {\n trace.info('ICE Candidate add to peer connection');\n })\n .catch((e) => {\n trace.warn('Error adding ICE Candidate to peer connection', e);\n throw e;\n });\n }\n\n _processQueuedIceCandidates(peerId: string): void {\n this._withPeerConnection(peerId, (peerConnection: RTCPeerConnection) => {\n const pendingIces = this._pendingPeersIce[peerId];\n\n if (pendingIces) {\n pendingIces.forEach((pendingIce: RTCIceCandidate) => {\n trace.info('Adding pending ICE to peer connections');\n this._addIceCandidateToPeer(pendingIce, peerConnection).catch(() => undefined);\n });\n } else {\n trace.info('No pending ICE found for peer', peerId);\n }\n });\n }\n\n _queueIceCandidate(iceCandidate: RTCIceCandidate, peerId: string): void {\n if (!this._pendingPeersIce[peerId]) {\n this._pendingPeersIce[peerId] = [];\n }\n\n this._pendingPeersIce[peerId].push(iceCandidate);\n }\n\n _iceStateDisconnected(peerConnection: RTCPeerConnection): void {\n trace.info(\n '_iceStateDisconnected disconnect from session',\n MediaSessionDisconnectReason.PeerConnectionInterrupted\n );\n this._disconnectInternal(MediaSessionDisconnectReason.PeerConnectionInterrupted).catch(() => undefined);\n }\n\n //#endregion\n sessionDisconnect(): void {\n if (this._socket) {\n this._socket.off();\n this._socket.disconnect();\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SessionTurn.d.ts","sourceRoot":"","sources":["../../src/MediaSession/SessionTurn.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAiD,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAWvH,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAKpD,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,iBAAiB,CAAE,YAAW,aAAa;IAC/F,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IACrC,OAAO,CAAC,OAAO,CAAM;IAErB,IAAI,EAAE,IAAI,MAAM,CAEf;gBAGG,aAAa,EAAE,kBAAkB,GAAG,yBAAyB,EAC7D,eAAe,EAAE,oBAAoB,EACrC,aAAa,EAAE,sBAAsB;IA6BzC,OAAO,CAAC,WAAW,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiChE,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAiBlD,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtE,iBAAiB,CAAC,kBAAkB,EAAE,GAAG,GAAG,IAAI;IAuDhD,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI;IAyBjD,wBAAwB,CAAC,qBAAqB,EAAE,GAAG,GAAG,IAAI;IAgB1D,gBAAgB,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI;IAoD1C,8BAA8B,IAAI,IAAI;IAgBtC,sBAAsB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5F,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY5E,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,qBAAqB;IAoE7B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,mBAAmB;IAY3B,4BAA4B,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI;IAuBzD,sBAAsB,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvG,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAejD,kBAAkB,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvE,qBAAqB,CAAC,cAAc,EAAE,iBAAiB,GAAG,IAAI;IAS9D,iBAAiB,IAAI,IAAI;CAM5B"}
|