@techsee/techsee-media-service 999.20.0-nodejs20 → 999.20.2-alpha
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/README.md +28 -27
- package/lib/LocalStreamManager.d.ts +0 -1
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +84 -82
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +3 -21
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +13 -32
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +1 -7
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +4 -1
- package/lib/MediaContracts.js.map +1 -1
- package/lib/MediaPublisher.d.ts +0 -1
- package/lib/MediaPublisher.d.ts.map +1 -1
- package/lib/MediaPublisher.js +10 -7
- package/lib/MediaPublisher.js.map +1 -1
- package/lib/MediaServiceBase.d.ts +0 -1
- package/lib/MediaServiceBase.d.ts.map +1 -1
- package/lib/MediaServiceBase.js +199 -170
- package/lib/MediaServiceBase.js.map +1 -1
- package/lib/MediaSession/MediaServer.d.ts +0 -1
- package/lib/MediaSession/MediaServer.d.ts.map +1 -1
- package/lib/MediaSession/MediaServer.js +74 -62
- package/lib/MediaSession/MediaServer.js.map +1 -1
- package/lib/MediaSession/MediaSessionBase.d.ts +0 -1
- package/lib/MediaSession/MediaSessionBase.d.ts.map +1 -1
- package/lib/MediaSession/MediaSessionBase.js +23 -19
- package/lib/MediaSession/MediaSessionBase.js.map +1 -1
- package/lib/MediaSession/SessionOpentok.d.ts +0 -1
- package/lib/MediaSession/SessionOpentok.d.ts.map +1 -1
- package/lib/MediaSession/SessionOpentok.js +80 -51
- package/lib/MediaSession/SessionOpentok.js.map +1 -1
- package/lib/MediaSession/SessionTurn.d.ts +0 -1
- package/lib/MediaSession/SessionTurn.d.ts.map +1 -1
- package/lib/MediaSession/SessionTurn.js +151 -109
- package/lib/MediaSession/SessionTurn.js.map +1 -1
- package/lib/MediaSession/TurnConstants.d.ts +0 -1
- package/lib/MediaSession/TurnConstants.d.ts.map +1 -1
- package/lib/MediaSession/TurnConstants.js +16 -1
- package/lib/MediaSession/TurnConstants.js.map +1 -1
- package/lib/MediaSubscriber.d.ts +0 -1
- package/lib/MediaSubscriber.d.ts.map +1 -1
- package/lib/MediaSubscriber.js +43 -37
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +0 -3
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +34 -76
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +3 -6
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +65 -70
- package/lib/MediaUtils/MediaDomUtils.js.map +1 -1
- package/lib/MediaUtils/MediaTracer.d.ts +0 -1
- package/lib/MediaUtils/MediaTracer.d.ts.map +1 -1
- package/lib/MediaUtils/MediaTracer.js +5 -2
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MultiParty/Contracts.d.ts +10 -0
- package/lib/MultiParty/Contracts.d.ts.map +1 -0
- package/lib/MultiParty/Contracts.js +6 -0
- package/lib/MultiParty/Contracts.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +14 -17
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +54 -98
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +10 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js +140 -0
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +1 -0
- package/lib/MultiParty/MultiParty.d.ts +19 -0
- package/lib/MultiParty/MultiParty.d.ts.map +1 -0
- package/lib/MultiParty/MultiParty.js +160 -0
- package/lib/MultiParty/MultiParty.js.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts +25 -0
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +1 -0
- package/lib/MultiParty/OpentokMultiparty.js +184 -0
- package/lib/MultiParty/OpentokMultiparty.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +0 -1
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +12 -9
- package/lib/TechseeMediaStream.js.map +1 -1
- package/lib/oldCode/constants.js +20 -0
- package/lib/oldCode/constants.js.map +1 -0
- package/lib/oldCode/event-emitter.js +39 -0
- package/lib/oldCode/event-emitter.js.map +1 -0
- package/lib/oldCode/index.js +64 -0
- package/lib/oldCode/index.js.map +1 -0
- package/lib/oldCode/opentok/session.js +310 -0
- package/lib/oldCode/opentok/session.js.map +1 -0
- package/lib/oldCode/opentok/stream.js +310 -0
- package/lib/oldCode/opentok/stream.js.map +1 -0
- package/lib/oldCode/publisher.js +143 -0
- package/lib/oldCode/publisher.js.map +1 -0
- package/lib/oldCode/service.js +395 -0
- package/lib/oldCode/service.js.map +1 -0
- package/lib/oldCode/session.js +110 -0
- package/lib/oldCode/session.js.map +1 -0
- package/lib/oldCode/stream.js +195 -0
- package/lib/oldCode/stream.js.map +1 -0
- package/lib/oldCode/subscriber.js +90 -0
- package/lib/oldCode/subscriber.js.map +1 -0
- package/lib/oldCode/tracer.d.ts +36 -0
- package/lib/oldCode/tracer.d.ts.map +1 -0
- package/lib/oldCode/tracer.js +161 -0
- package/lib/oldCode/tracer.js.map +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts +1 -0
- package/lib/oldCode/utils/ImageFixer.d.ts.map +1 -0
- package/lib/oldCode/utils/ImageFixer.js +59 -0
- package/lib/oldCode/utils/ImageFixer.js.map +1 -0
- package/lib/oldCode/webrtc/constants.js +114 -0
- package/lib/oldCode/webrtc/constants.js.map +1 -0
- package/lib/oldCode/webrtc/helper.js +173 -0
- package/lib/oldCode/webrtc/helper.js.map +1 -0
- package/lib/oldCode/webrtc/session-kms.js +558 -0
- package/lib/oldCode/webrtc/session-kms.js.map +1 -0
- package/lib/oldCode/webrtc/session-loopback.js +336 -0
- package/lib/oldCode/webrtc/session-loopback.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.js +880 -0
- package/lib/oldCode/webrtc/session-turn.js.map +1 -0
- package/lib/oldCode/webrtc/session-turn.v2.js +583 -0
- package/lib/oldCode/webrtc/session-turn.v2.js.map +1 -0
- package/lib/oldCode/webrtc/session.js +52 -0
- package/lib/oldCode/webrtc/session.js.map +1 -0
- package/lib/oldCode/webrtc/stream.js +674 -0
- package/lib/oldCode/webrtc/stream.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +12 -0
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +1 -0
- package/lib/oldCode/webrtc/temasys/adapter.js +5861 -0
- package/lib/oldCode/webrtc/temasys/adapter.js.map +1 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +3007 -0
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +1 -0
- package/lib/qos/raw-qos.js +145 -84
- package/lib/qos/raw-qos.js.map +1 -1
- package/lib/webrtc-ie-shim.js +2950 -1896
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +61 -66
- package/lib/MediaUtils/index.d.ts +0 -2
- package/lib/MediaUtils/index.d.ts.map +0 -1
- package/lib/MediaUtils/index.js +0 -6
- package/lib/MediaUtils/index.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +0 -18
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesService.js +0 -158
- package/lib/MultiParty/MediaCapabilitiesService.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +0 -6
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesUtils.js +0 -123
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +0 -1
- package/lib/MultiParty/MediaTracer.d.ts +0 -4
- package/lib/MultiParty/MediaTracer.d.ts.map +0 -1
- package/lib/MultiParty/MediaTracer.js +0 -10
- package/lib/MultiParty/MediaTracer.js.map +0 -1
- package/lib/MultiParty/MultiPartyService.d.ts +0 -49
- package/lib/MultiParty/MultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyService.js +0 -30
- package/lib/MultiParty/MultiPartyService.js.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +0 -4
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultiPartyServiceFactory.js +0 -13
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +0 -89
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyServiceEventTypes.js +0 -16
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +0 -1
- package/lib/MultiParty/index.d.ts +0 -7
- package/lib/MultiParty/index.d.ts.map +0 -1
- package/lib/MultiParty/index.js +0 -25
- package/lib/MultiParty/index.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +0 -38
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +0 -492
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +0 -34
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisher.js +0 -121
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +0 -20
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +0 -49
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +0 -6
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +0 -48
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +0 -2
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokSubscriber.js +0 -26
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +0 -19
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +0 -1
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +0 -182
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +0 -1
- package/lib/MultiParty/opentok/trace.d.ts +0 -3
- package/lib/MultiParty/opentok/trace.d.ts.map +0 -1
- package/lib/MultiParty/opentok/trace.js +0 -18
- package/lib/MultiParty/opentok/trace.js.map +0 -1
- package/lib/MultiParty/opentok.d.ts +0 -463
- package/lib/MultiParty/types.d.ts +0 -33
- package/lib/MultiParty/types.d.ts.map +0 -1
- package/lib/MultiParty/types.js +0 -3
- package/lib/MultiParty/types.js.map +0 -1
- package/lib/MultiParty/utils.d.ts +0 -10
- package/lib/MultiParty/utils.d.ts.map +0 -1
- package/lib/MultiParty/utils.js +0 -17
- package/lib/MultiParty/utils.js.map +0 -1
- package/lib/qos/raw-qos.d.ts +0 -29
- package/lib/qos/raw-qos.d.ts.map +0 -1
- package/lib/webrtc-ie-shim.d.ts +0 -4
- package/lib/webrtc-ie-shim.d.ts.map +0 -1
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
var __extends = undefined && undefined.__extends || function () {
|
|
4
|
+
var _extendStatics = function extendStatics(d, b) {
|
|
5
|
+
_extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
|
|
6
|
+
d.__proto__ = b;
|
|
7
|
+
} || function (d, b) {
|
|
8
|
+
for (var p in b) {
|
|
9
|
+
if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
return _extendStatics(d, b);
|
|
8
13
|
};
|
|
9
14
|
return function (d, b) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
_extendStatics(d, b);
|
|
16
|
+
function __() {
|
|
17
|
+
this.constructor = d;
|
|
18
|
+
}
|
|
14
19
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
20
|
};
|
|
16
|
-
}
|
|
17
|
-
var __importDefault =
|
|
18
|
-
return
|
|
21
|
+
}();
|
|
22
|
+
var __importDefault = undefined && undefined.__importDefault || function (mod) {
|
|
23
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
19
24
|
};
|
|
20
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
26
|
exports.MediaServerSession = void 0;
|
|
@@ -26,8 +31,8 @@ var MediaTracer_1 = require("../MediaUtils/MediaTracer");
|
|
|
26
31
|
var guards_1 = require("@techsee/techsee-common/lib/core/guards");
|
|
27
32
|
var bluebird_1 = require("bluebird");
|
|
28
33
|
var get_1 = __importDefault(require("lodash/get"));
|
|
29
|
-
var trace =
|
|
30
|
-
var MediaServerSession =
|
|
34
|
+
var trace = MediaTracer_1.getMediaTracer('MediaServerSession');
|
|
35
|
+
var MediaServerSession = /** @class */function (_super) {
|
|
31
36
|
__extends(MediaServerSession, _super);
|
|
32
37
|
function MediaServerSession(sessionParams, streamFactory) {
|
|
33
38
|
var _this = _super.call(this, sessionParams, streamFactory) || this;
|
|
@@ -49,7 +54,7 @@ var MediaServerSession = (function (_super) {
|
|
|
49
54
|
return _this;
|
|
50
55
|
}
|
|
51
56
|
Object.defineProperty(MediaServerSession.prototype, "ownPeerId", {
|
|
52
|
-
get: function () {
|
|
57
|
+
get: function get() {
|
|
53
58
|
return this._session && this._session.connection ? this._session.connection.connectionId : '';
|
|
54
59
|
},
|
|
55
60
|
enumerable: false,
|
|
@@ -61,12 +66,16 @@ var MediaServerSession = (function (_super) {
|
|
|
61
66
|
trace.error('Session already exists');
|
|
62
67
|
return bluebird_1.Promise.reject('Cannot connect to session while another session is active');
|
|
63
68
|
}
|
|
69
|
+
// const iceServers = this._credentials.ice.map((item: any) => ({
|
|
70
|
+
// urls: item.url,
|
|
71
|
+
// username: item.login,
|
|
72
|
+
// credential: item.password
|
|
73
|
+
// }));
|
|
64
74
|
this.OV = new openvidu_browser_1.OpenVidu();
|
|
75
|
+
// this.OV.setAdvancedConfiguration({ iceServers });
|
|
65
76
|
this._session = this.OV.initSession();
|
|
66
77
|
this.initSessionEvents();
|
|
67
|
-
return this._session
|
|
68
|
-
.connect(this._credentials.token, { clientRole: this._sessionParams.clientRole })
|
|
69
|
-
.catch(function (err) {
|
|
78
|
+
return this._session.connect(this._credentials.token, { clientRole: this._sessionParams.clientRole }).catch(function (err) {
|
|
70
79
|
trace.error('Error to connect to session Media Server: ', err);
|
|
71
80
|
throw err;
|
|
72
81
|
});
|
|
@@ -93,7 +102,11 @@ var MediaServerSession = (function (_super) {
|
|
|
93
102
|
_this.removeSessionEvent();
|
|
94
103
|
_this._session.disconnect();
|
|
95
104
|
_this._lastStreamEvents = [];
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
106
|
+
// @ts-ignore
|
|
96
107
|
delete _this._session;
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
109
|
+
// @ts-ignore
|
|
97
110
|
delete _this.OV;
|
|
98
111
|
resolve();
|
|
99
112
|
});
|
|
@@ -114,6 +127,8 @@ var MediaServerSession = (function (_super) {
|
|
|
114
127
|
trace.info('Remove Events Listener');
|
|
115
128
|
};
|
|
116
129
|
MediaServerSession.prototype.getRemoteTrackStats = function (mediaTrack) {
|
|
130
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
131
|
+
// @ts-ignore// @ts-ignore
|
|
117
132
|
return bluebird_1.Promise.resolve(undefined);
|
|
118
133
|
};
|
|
119
134
|
MediaServerSession.prototype.onMediaStreamDestroyed = function (clientRole) {
|
|
@@ -125,7 +140,9 @@ var MediaServerSession = (function (_super) {
|
|
|
125
140
|
promises.push(_this.destroyPublisherOnPeerConnection(peerConnection));
|
|
126
141
|
}
|
|
127
142
|
});
|
|
128
|
-
return bluebird_1.Promise.all(promises).then(function () {
|
|
143
|
+
return bluebird_1.Promise.all(promises).then(function () {
|
|
144
|
+
return trace.info('onMediaStreamDestroyed: Success');
|
|
145
|
+
});
|
|
129
146
|
};
|
|
130
147
|
MediaServerSession.prototype.onPublisherDestroyed = function (connectionId) {
|
|
131
148
|
trace.info('onPublisherDestroyed');
|
|
@@ -177,7 +194,9 @@ var MediaServerSession = (function (_super) {
|
|
|
177
194
|
trace.warn('Peer connection for remote stream not found');
|
|
178
195
|
return;
|
|
179
196
|
}
|
|
180
|
-
this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {
|
|
197
|
+
this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {
|
|
198
|
+
return undefined;
|
|
199
|
+
});
|
|
181
200
|
};
|
|
182
201
|
MediaServerSession.prototype.connectionDestroyedHandler = function (event) {
|
|
183
202
|
trace.info('connectionDestroyedHandler', event);
|
|
@@ -187,18 +206,17 @@ var MediaServerSession = (function (_super) {
|
|
|
187
206
|
}
|
|
188
207
|
if (this._peerConnections.has(connection.connectionId)) {
|
|
189
208
|
var peerConnection = this._peerConnections.get(connection.connectionId);
|
|
190
|
-
this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {
|
|
209
|
+
this.destroySubscriberOnPeerConnection(peerConnection).catch(function () {
|
|
210
|
+
return undefined;
|
|
211
|
+
});
|
|
191
212
|
}
|
|
192
213
|
};
|
|
193
214
|
MediaServerSession.prototype.destroyPeerConnection = function (peerConnection) {
|
|
194
215
|
trace.info('destroyPeerConnection');
|
|
195
216
|
this._peerConnections.delete(peerConnection.peerId);
|
|
196
|
-
return bluebird_1.Promise.all([
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
])
|
|
200
|
-
.then(function () { return undefined; })
|
|
201
|
-
.catch(function () {
|
|
217
|
+
return bluebird_1.Promise.all([this.destroyPublisherOnPeerConnection(peerConnection), this.destroySubscriberOnPeerConnection(peerConnection)]).then(function () {
|
|
218
|
+
return undefined;
|
|
219
|
+
}).catch(function () {
|
|
202
220
|
trace.warn('destroyPeerConnection - something wrong with destroy');
|
|
203
221
|
});
|
|
204
222
|
};
|
|
@@ -208,9 +226,9 @@ var MediaServerSession = (function (_super) {
|
|
|
208
226
|
this._session.unsubscribe(peerConnection.subscriber);
|
|
209
227
|
}
|
|
210
228
|
trace.info('destroySubscriberOnPeerConnection- before unregisterPeersRemoteMediaTracks');
|
|
211
|
-
return this.unregisterPeersRemoteMediaTracks(peerConnection)
|
|
212
|
-
|
|
213
|
-
|
|
229
|
+
return this.unregisterPeersRemoteMediaTracks(peerConnection).catch(function () {
|
|
230
|
+
return trace.warn('Error removing remote streams from peerConnection');
|
|
231
|
+
}).then(function () {
|
|
214
232
|
trace.info('destroySubscriberOnPeerConnection- unregisterPeersRemoteMediaTracks successfully');
|
|
215
233
|
peerConnection.subscriber = null;
|
|
216
234
|
});
|
|
@@ -264,10 +282,7 @@ var MediaServerSession = (function (_super) {
|
|
|
264
282
|
return this.createMediaSubscriber(stream).then(function (subscriber) {
|
|
265
283
|
peerConnection.subscriber = subscriber;
|
|
266
284
|
trace.info('Registering remote media tracks', peerConnection.subscriber);
|
|
267
|
-
subscriber.stream
|
|
268
|
-
.getMediaStream()
|
|
269
|
-
.getTracks()
|
|
270
|
-
.forEach(function (mediaTrack) {
|
|
285
|
+
subscriber.stream.getMediaStream().getTracks().forEach(function (mediaTrack) {
|
|
271
286
|
_this.addRemoteTrackToPeer(peerConnection, mediaTrack);
|
|
272
287
|
});
|
|
273
288
|
return _this.registerPeersRemoteTracks(peerConnection);
|
|
@@ -276,22 +291,18 @@ var MediaServerSession = (function (_super) {
|
|
|
276
291
|
MediaServerSession.prototype.createStreamForPublishing = function (destinationRole) {
|
|
277
292
|
var _this = this;
|
|
278
293
|
trace.info('createStreamForPublishing');
|
|
279
|
-
return this._sessionStreamsManager
|
|
280
|
-
.getMediaStreamForRole(destinationRole)
|
|
281
|
-
.then(function (mediaStream) {
|
|
294
|
+
return this._sessionStreamsManager.getMediaStreamForRole(destinationRole).then(function (mediaStream) {
|
|
282
295
|
var stream = { videoSource: null, audioSource: null };
|
|
283
296
|
if (mediaStream) {
|
|
284
297
|
trace.info('Media stream found for publishing', mediaStream);
|
|
285
298
|
mediaStream.getTracks().forEach(function (track) {
|
|
286
299
|
if (track.kind === 'video') {
|
|
287
300
|
stream.videoSource = track;
|
|
288
|
-
}
|
|
289
|
-
else if (track.kind === 'audio') {
|
|
301
|
+
} else if (track.kind === 'audio') {
|
|
290
302
|
stream.audioSource = track;
|
|
291
303
|
}
|
|
292
304
|
});
|
|
293
|
-
}
|
|
294
|
-
else if (_this._sessionParams.clientRole === MediaConstants_1.SessionClientRole.USER) {
|
|
305
|
+
} else if (_this._sessionParams.clientRole === MediaConstants_1.SessionClientRole.USER) {
|
|
295
306
|
trace.warn('No local media was found for publishing to destinationRole:', destinationRole);
|
|
296
307
|
}
|
|
297
308
|
return stream;
|
|
@@ -313,8 +324,10 @@ var MediaServerSession = (function (_super) {
|
|
|
313
324
|
}
|
|
314
325
|
ovPublisher.on('streamDestroyed', function (event) {
|
|
315
326
|
trace.info('Publisher stream destroyed', event);
|
|
316
|
-
var connectionId =
|
|
327
|
+
var connectionId = get_1.default(event, 'stream.connection.connectionId');
|
|
317
328
|
_this.onPublisherDestroyed(connectionId);
|
|
329
|
+
//We preventing the default, in order to prevent stop the stream by OV.
|
|
330
|
+
//We managing streams by ourselves and if we allow OV to close the stream, it cannot be reused.
|
|
318
331
|
event.preventDefault();
|
|
319
332
|
});
|
|
320
333
|
resolve(ovPublisher);
|
|
@@ -329,14 +342,11 @@ var MediaServerSession = (function (_super) {
|
|
|
329
342
|
return;
|
|
330
343
|
}
|
|
331
344
|
var destinationRole = JSON.parse(connection.data).clientRole;
|
|
332
|
-
this.createStreamForPublishing(destinationRole)
|
|
333
|
-
.then(function (streams) {
|
|
345
|
+
this.createStreamForPublishing(destinationRole).then(function (streams) {
|
|
334
346
|
var peerConnection = {
|
|
335
347
|
peerId: connection.connectionId,
|
|
336
348
|
peerRole: destinationRole,
|
|
337
|
-
peerType: _this._sessionParams.clientType === MediaConstants_1.SessionClientType.INITIATOR
|
|
338
|
-
? MediaConstants_1.SessionClientType.GUEST
|
|
339
|
-
: MediaConstants_1.SessionClientType.INITIATOR,
|
|
349
|
+
peerType: _this._sessionParams.clientType === MediaConstants_1.SessionClientType.INITIATOR ? MediaConstants_1.SessionClientType.GUEST : MediaConstants_1.SessionClientType.INITIATOR,
|
|
340
350
|
connection: connection,
|
|
341
351
|
publisher: null,
|
|
342
352
|
subscriber: null,
|
|
@@ -344,7 +354,7 @@ var MediaServerSession = (function (_super) {
|
|
|
344
354
|
localStream: streams,
|
|
345
355
|
connectionTimoutPrt: null
|
|
346
356
|
};
|
|
347
|
-
if (connection.connectionId !== _this.ownPeerId ||
|
|
357
|
+
if (connection.connectionId !== _this.ownPeerId || !streams.videoSource && !streams.audioSource) {
|
|
348
358
|
trace.info('Peer connection without publisher was created', peerConnection);
|
|
349
359
|
return peerConnection;
|
|
350
360
|
}
|
|
@@ -353,16 +363,15 @@ var MediaServerSession = (function (_super) {
|
|
|
353
363
|
trace.info('Peer connection with publisher was created', peerConnection);
|
|
354
364
|
return peerConnection;
|
|
355
365
|
});
|
|
356
|
-
})
|
|
357
|
-
.then(function (peerConnection) {
|
|
366
|
+
}).then(function (peerConnection) {
|
|
358
367
|
_this._peerConnections.set(peerConnection.peerId, peerConnection);
|
|
359
368
|
if (connection.connectionId === _this.ownPeerId) {
|
|
360
369
|
trace.info('Before subscribe the event streams');
|
|
361
|
-
return _this._lastStreamEvents
|
|
362
|
-
.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
370
|
+
return _this._lastStreamEvents.reduce(function (promiseChain, streamEvent) {
|
|
371
|
+
return promiseChain.then(function () {
|
|
372
|
+
return _this.streamCreatedHandler(streamEvent);
|
|
373
|
+
});
|
|
374
|
+
}, bluebird_1.Promise.resolve()).then(function () {
|
|
366
375
|
if (peerConnection.publisher) {
|
|
367
376
|
trace.info('Starting publish to peerConnection.publisher');
|
|
368
377
|
return _this._session.publish(peerConnection.publisher).catch(function (err) {
|
|
@@ -377,17 +386,20 @@ var MediaServerSession = (function (_super) {
|
|
|
377
386
|
return bluebird_1.Promise.resolve();
|
|
378
387
|
});
|
|
379
388
|
}
|
|
380
|
-
})
|
|
381
|
-
.catch(function (error) {
|
|
389
|
+
}).catch(function (error) {
|
|
382
390
|
trace.error('Error handling new peer connection', error);
|
|
383
391
|
});
|
|
384
392
|
};
|
|
385
393
|
MediaServerSession.prototype.sessionExistsGuard = function (shouldThrow) {
|
|
386
|
-
if (shouldThrow === void 0) {
|
|
394
|
+
if (shouldThrow === void 0) {
|
|
395
|
+
shouldThrow = true;
|
|
396
|
+
}
|
|
387
397
|
var connected = !!(this._session && this._session.connection && this._session.connection.connectionId);
|
|
388
|
-
return
|
|
398
|
+
return guards_1.throwableGuard(connected, 'There no MediaServer session exists', shouldThrow);
|
|
389
399
|
};
|
|
390
400
|
return MediaServerSession;
|
|
391
|
-
}(MediaSessionBase_1.MediaSessionBase)
|
|
401
|
+
}(MediaSessionBase_1.MediaSessionBase);
|
|
392
402
|
exports.MediaServerSession = MediaServerSession;
|
|
393
|
-
|
|
403
|
+
|
|
404
|
+
//# sourceMappingURL=MediaServer.js.map
|
|
405
|
+
//# sourceMappingURL=MediaServer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaServer.js","sourceRoot":"","sources":["../../src/MediaSession/MediaServer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["MediaSession/MediaServer.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__","constructor","create","__importDefault","mod","__esModule","defineProperty","exports","value","MediaServerSession","MediaSessionBase_1","require","MediaConstants_1","openvidu_browser_1","MediaTracer_1","guards_1","bluebird_1","get_1","trace","getMediaTracer","_super","sessionParams","streamFactory","_this","OV","_session","_lastStreamEvents","_credentials","credentials","connect","bind","disconnect","onMediaStreamDestroyed","onPublisherDestroyed","onMediaStreamRenewed","createStreamForPublishing","createMediaPublisher","connectionCreatedHandler","connectionDestroyedHandler","streamCreatedHandler","streamDestroyedHandler","get","connection","connectionId","enumerable","configurable","connectOnly","info","error","Promise","reject","OpenVidu","initSession","initSessionEvents","token","clientRole","_sessionParams","catch","err","sessionDisconnect","resolve","promiseDisconnect","_peerConnections","forEach","peerConnection","push","destroyPeerConnection","all","then","removeSessionEvent","off","removeHandlers","getRemoteTrackStats","mediaTrack","undefined","promises","peerRole","destroyPublisherOnPeerConnection","mediaStream","replaceStreamTracks","Error","initHandlers","on","event","emitEvent","recordingEvents","RECORD_STARTED","RECORD_STOPPED","RECONNECTING","stream","sessionExistsGuard","warn","destroySubscriberOnPeerConnection","has","delete","peerId","subscriber","unsubscribe","unregisterPeersRemoteMediaTracks","publisher","unpublish","localStream","createMediaSubscriber","remoteStream","subscribe","ownPeerId","getMediaStream","getTracks","addRemoteTrackToPeer","registerPeersRemoteTracks","destinationRole","_sessionStreamsManager","getMediaStreamForRole","videoSource","audioSource","track","kind","SessionClientRole","USER","ovParams","publishAudio","publishVideo","ovPublisher","initPublisher","default","preventDefault","JSON","parse","data","streams","peerType","clientType","SessionClientType","INITIATOR","GUEST","remoteMediaTracks","connectionTimoutPrt","set","reduce","promiseChain","streamEvent","publish","shouldThrow","connected","throwableGuard","MediaSessionBase"],"mappings":"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","file":"MediaServer.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})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaServerSession = void 0;\nvar MediaSessionBase_1 = require(\"./MediaSessionBase\");\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar openvidu_browser_1 = require(\"@techsee/openvidu-browser\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar guards_1 = require(\"@techsee/techsee-common/lib/core/guards\");\nvar bluebird_1 = require(\"bluebird\");\nvar get_1 = __importDefault(require(\"lodash/get\"));\nvar trace = MediaTracer_1.getMediaTracer('MediaServerSession');\nvar MediaServerSession = /** @class */ (function (_super) {\n __extends(MediaServerSession, _super);\n function MediaServerSession(sessionParams, streamFactory) {\n var _this = _super.call(this, sessionParams, streamFactory) || this;\n _this.OV = null;\n _this._session = null;\n _this._lastStreamEvents = [];\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.onPublisherDestroyed = _this.onPublisherDestroyed.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(MediaServerSession.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 MediaServerSession.prototype.connect = function (connectOnly) {\n trace.info('Connect to session', this._credentials);\n if (this._session) {\n trace.error('Session already exists');\n return bluebird_1.Promise.reject('Cannot connect to session while another session is active');\n }\n // const iceServers = this._credentials.ice.map((item: any) => ({\n // urls: item.url,\n // username: item.login,\n // credential: item.password\n // }));\n this.OV = new openvidu_browser_1.OpenVidu();\n // this.OV.setAdvancedConfiguration({ iceServers });\n this._session = this.OV.initSession();\n this.initSessionEvents();\n return this._session.connect(this._credentials.token, { clientRole: this._sessionParams.clientRole })\n .catch(function (err) {\n trace.error('Error to connect to session Media Server: ', err);\n throw err;\n });\n };\n MediaServerSession.prototype.sessionDisconnect = function () {\n if (this._session) {\n return this._session.disconnect(true);\n }\n };\n MediaServerSession.prototype.disconnect = function () {\n var _this = this;\n return new bluebird_1.Promise(function (resolve) {\n trace.info('Disconnecting from session');\n var promiseDisconnect = [];\n _this._peerConnections.forEach(function (peerConnection) {\n promiseDisconnect.push(_this.destroyPeerConnection(peerConnection));\n });\n return bluebird_1.Promise.all(promiseDisconnect).then(function () {\n if (!_this._session) {\n trace.info('No active session - resolving');\n resolve();\n return;\n }\n _this.removeSessionEvent();\n _this._session.disconnect();\n _this._lastStreamEvents = [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this._session;\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n delete _this.OV;\n resolve();\n });\n });\n };\n MediaServerSession.prototype.removeSessionEvent = function () {\n if (!this._session) {\n return;\n }\n this._session.off('connectionCreated');\n this._session.off('streamCreated');\n this._session.off('streamDestroyed');\n this._session.off('connectionDestroyed');\n this._session.off('sessionDisconnected');\n this._session.off('recordingStarted');\n this._session.off('recordingStopped');\n this._sessionParams.removeHandlers && this._sessionParams.removeHandlers();\n trace.info('Remove Events Listener');\n };\n MediaServerSession.prototype.getRemoteTrackStats = function (mediaTrack) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore// @ts-ignore\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.onMediaStreamDestroyed = function (clientRole) {\n var _this = this;\n trace.info('onMediaStreamDestroyed');\n var promises = [];\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnection.peerRole === clientRole) {\n promises.push(_this.destroyPublisherOnPeerConnection(peerConnection));\n }\n });\n return bluebird_1.Promise.all(promises).then(function () { return trace.info('onMediaStreamDestroyed: Success'); });\n };\n MediaServerSession.prototype.onPublisherDestroyed = function (connectionId) {\n trace.info('onPublisherDestroyed');\n var peerConnection = this._peerConnections.get(connectionId);\n if (!peerConnection) {\n return bluebird_1.Promise.resolve();\n }\n return this.destroyPublisherOnPeerConnection(peerConnection);\n };\n MediaServerSession.prototype.onMediaStreamRenewed = function (clientRole, mediaStream) {\n return bluebird_1.Promise.resolve(undefined);\n };\n MediaServerSession.prototype.replaceStreamTracks = function (mediaStream) {\n return bluebird_1.Promise.reject(new Error('Not implemented'));\n };\n MediaServerSession.prototype.initSessionEvents = function () {\n var _this = this;\n if (!this._session) {\n return;\n }\n this._sessionParams.initHandlers && this._sessionParams.initHandlers();\n this._lastStreamEvents = [];\n this._session.on('connectionCreated', this.connectionCreatedHandler);\n this._session.on('streamCreated', this.streamCreatedHandler);\n this._session.on('streamDestroyed', this.streamDestroyedHandler);\n this._session.on('connectionDestroyed', this.connectionDestroyedHandler);\n this._session.on('recordingStarted', function (event) {\n trace.info('recordingStarted event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STARTED, event);\n });\n this._session.on('recordingStopped', function (event) {\n trace.info('recordingStopped event', event);\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECORD_STOPPED, event);\n });\n this._session.on('reconnecting', function () {\n trace.info('reconnecting event');\n _this.emitEvent(MediaSessionBase_1.recordingEvents.RECONNECTING);\n });\n this._session.on('sessionDisconnected', this.disconnect);\n };\n MediaServerSession.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 () { return undefined; });\n };\n MediaServerSession.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 var peerConnection = this._peerConnections.get(connection.connectionId);\n this.destroySubscriberOnPeerConnection(peerConnection).catch(function () { return undefined; });\n }\n };\n MediaServerSession.prototype.destroyPeerConnection = function (peerConnection) {\n trace.info('destroyPeerConnection');\n this._peerConnections.delete(peerConnection.peerId);\n return bluebird_1.Promise.all([this.destroyPublisherOnPeerConnection(peerConnection),\n this.destroySubscriberOnPeerConnection(peerConnection)]).then(function () { return undefined; })\n .catch(function () {\n trace.warn('destroyPeerConnection - something wrong with destroy');\n });\n };\n MediaServerSession.prototype.destroySubscriberOnPeerConnection = function (peerConnection) {\n trace.info('destroySubscriberOnPeerConnection', peerConnection);\n if (this.sessionExistsGuard(false) && peerConnection.subscriber) {\n this._session.unsubscribe(peerConnection.subscriber);\n }\n trace.info('destroySubscriberOnPeerConnection- before unregisterPeersRemoteMediaTracks');\n return this.unregisterPeersRemoteMediaTracks(peerConnection)\n .catch(function () { return trace.warn('Error removing remote streams from peerConnection'); })\n .then(function () {\n trace.info('destroySubscriberOnPeerConnection- unregisterPeersRemoteMediaTracks successfully');\n peerConnection.subscriber = null;\n });\n };\n MediaServerSession.prototype.destroyPublisherOnPeerConnection = function (peerConnection) {\n trace.info('destroyPublisherOnPeerConnection');\n if (this.sessionExistsGuard(false) && peerConnection.publisher) {\n trace.info('destroyPublisherOnPeerConnection- unpublish!');\n this._session.unpublish(peerConnection.publisher);\n }\n peerConnection.publisher = null;\n peerConnection.localStream = null;\n return bluebird_1.Promise.resolve();\n };\n MediaServerSession.prototype.createMediaSubscriber = function (remoteStream) {\n var _this = this;\n trace.info('createMediaSubscriber');\n return new bluebird_1.Promise(function (resolve, reject) {\n if (!_this.sessionExistsGuard(false)) {\n return reject('Session not exists');\n }\n trace.info('Before create subscriber');\n var subscriber = _this._session.subscribe(remoteStream, '', {}, function (err) {\n if (err) {\n trace.warn('Error creating subscriber', err);\n return reject(err);\n }\n trace.info('create subscriber successfully', subscriber);\n return resolve(subscriber);\n });\n });\n };\n MediaServerSession.prototype.streamCreatedHandler = function (event) {\n var _this = this;\n if (!event) {\n return bluebird_1.Promise.resolve();\n }\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 bluebird_1.Promise.resolve();\n }\n if (!this._peerConnections.has(connection.connectionId)) {\n trace.warn('Unexpected case, connection should exist, add to streams to subscribe list', event);\n this._lastStreamEvents.push(event);\n return bluebird_1.Promise.resolve();\n }\n var peerConnection = this._peerConnections.get(connection.connectionId);\n trace.info('Subscribing the stream');\n return this.createMediaSubscriber(stream).then(function (subscriber) {\n peerConnection.subscriber = subscriber;\n trace.info('Registering remote media tracks', peerConnection.subscriber);\n subscriber.stream.getMediaStream().getTracks().forEach(function (mediaTrack) {\n _this.addRemoteTrackToPeer(peerConnection, mediaTrack);\n });\n return _this.registerPeersRemoteTracks(peerConnection);\n });\n };\n MediaServerSession.prototype.createStreamForPublishing = function (destinationRole) {\n var _this = this;\n trace.info('createStreamForPublishing');\n return this._sessionStreamsManager.getMediaStreamForRole(destinationRole)\n .then(function (mediaStream) {\n var stream = { videoSource: null, audioSource: null };\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 MediaServerSession.prototype.createMediaPublisher = function (stream) {\n var _this = this;\n var ovParams = {\n videoSource: stream.videoSource ? stream.videoSource : false,\n audioSource: stream.audioSource ? stream.audioSource : false,\n publishAudio: !!stream.audioSource,\n publishVideo: !!stream.videoSource\n };\n return new bluebird_1.Promise(function (resolve, reject) {\n var ovPublisher = _this.OV.initPublisher('', ovParams, function (error) {\n if (error) {\n reject(error);\n return;\n }\n ovPublisher.on('streamDestroyed', function (event) {\n trace.info('Publisher stream destroyed', event);\n var connectionId = get_1.default(event, 'stream.connection.connectionId');\n _this.onPublisherDestroyed(connectionId);\n //We preventing the default, in order to prevent stop the stream by OV.\n //We managing streams by ourselves and if we allow OV to close the stream, it cannot be reused.\n event.preventDefault();\n });\n resolve(ovPublisher);\n });\n });\n };\n MediaServerSession.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)\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 : 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)\n .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 return _this._lastStreamEvents.reduce(function (promiseChain, streamEvent) { return promiseChain.then(function () { return _this.streamCreatedHandler(streamEvent); }); }, bluebird_1.Promise.resolve()).then(function () {\n if (peerConnection.publisher) {\n trace.info('Starting publish to peerConnection.publisher');\n return _this._session.publish(peerConnection.publisher)\n .catch(function (err) {\n trace.info('Error during publish', peerConnection.publisher);\n if (peerConnection.publisher) {\n trace.info('Error during publish- unpublish');\n _this._session.unpublish(peerConnection.publisher);\n }\n throw err;\n });\n }\n return bluebird_1.Promise.resolve();\n });\n }\n })\n .catch(function (error) {\n trace.error('Error handling new peer connection', error);\n });\n };\n MediaServerSession.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 MediaServer session exists', shouldThrow);\n };\n return MediaServerSession;\n}(MediaSessionBase_1.MediaSessionBase));\nexports.MediaServerSession = MediaServerSession;\n\n//# sourceMappingURL=MediaServer.js.map\n"]}
|
|
@@ -32,4 +32,3 @@ export declare abstract class MediaSessionBase<PeerType extends IMediaSessionPee
|
|
|
32
32
|
protected unregisterPeersRemoteMediaTracks(peerConnection: PeerType): Promise<void>;
|
|
33
33
|
protected getPeerConnectionByMediaTrack(mediaTrack: MediaStreamTrack): Nullable<PeerType>;
|
|
34
34
|
}
|
|
35
|
-
//# sourceMappingURL=MediaSessionBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/MediaSession/MediaSessionBase.ts"],"names":[],"mappings":";AAAA,OAAO,EAAyC,iBAAiB,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EACH,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AAEpC,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,mBAAmB,EAAE,GAAG,CAAC;CAC5B;AAED,oBAAY,eAAe;IACvB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;CAChC;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,iBAAkB,SAAQ,iBAAiB;KAEpD;CACJ;AAID,8BAAsB,gBAAgB,CAAC,QAAQ,SAAS,iBAAiB;IACrE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,yBAAyB,CAAC;IAClF,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAE1C,SAAS,aAAa,aAAa,EAAE,kBAAkB,GAAG,yBAAyB,EAAE,aAAa,EAAE,sBAAsB;IAQ1H,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAI/E,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAMzD,SAAS,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB;IA+BpG,SAAS,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,iBAAiB;IAgB3E,SAAS,CAAC,gCAAgC,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnF,SAAS,CAAC,6BAA6B,CAAC,UAAU,EAAE,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC;CAiB5F","file":"MediaSessionBase.d.ts","sourcesContent":["import {KnownMediaStream, KnownMediaStreamKind, SessionClientRole, SessionClientType} from '../MediaConstants';\nimport {\n ISessionStreamsManager,\n MediaSessionConfiguration,\n MediaSessionParams,\n RemoteMediaTrack\n} from '../MediaContracts';\n\nimport {getMediaTracer} from '../MediaUtils/MediaTracer';\nimport {Nullable} from '@techsee/techsee-common';\nimport {EventEmitter} from 'events';\n\nexport interface IMediaSessionPeer {\n peerId: string;\n peerType: SessionClientType;\n peerRole: SessionClientRole;\n remoteMediaTracks: RemoteMediaTrack[];\n connectionTimoutPrt: any;\n}\n\nexport enum recordingEvents {\n RECORD_STARTED = 'RECORD_STARTED',\n RECORD_STOPPED = 'RECORD_STOPPED',\n RECONNECTING = 'RECONNECTING'\n}\n\ndeclare global {\n interface RTCPeerConnection extends IMediaSessionPeer {\n\n }\n}\n\nconst trace = getMediaTracer('MediaSessionBase');\n\nexport abstract class MediaSessionBase<PeerType extends IMediaSessionPeer> {\n protected readonly _peerConnections: Map<string, PeerType>;\n protected readonly _sessionStreamsManager: ISessionStreamsManager;\n protected readonly _sessionParams: MediaSessionParams & MediaSessionConfiguration;\n protected readonly _emitter: EventEmitter;\n\n protected constructor(sessionParams: MediaSessionParams & MediaSessionConfiguration, streamFactory: ISessionStreamsManager) {\n this._sessionParams = sessionParams;\n this._sessionStreamsManager = streamFactory;\n this._emitter = new EventEmitter();\n\n this._peerConnections = new Map();\n }\n\n registerEventCallback(event: string, callback: (eventArgs?: any) => void): void {\n this._emitter.on(event, callback);\n }\n\n protected emitEvent(event: string, eventArgs?: any): void {\n setTimeout(() => {\n this._emitter.emit(event, eventArgs);\n });\n }\n\n protected addRemoteTrackToPeer(sourcePeerConnection: IMediaSessionPeer, mediaTrack: MediaStreamTrack) {\n if (mediaTrack.kind === KnownMediaStreamKind.Video &&\n sourcePeerConnection.peerRole === SessionClientRole.AGENT) {\n //Currently We don't support video streams from Agent side\n return;\n }\n\n let trackType: Nullable<KnownMediaStream> = null;\n\n if (mediaTrack.kind.toLowerCase() === KnownMediaStreamKind.Audio) {\n switch (sourcePeerConnection.peerRole) {\n case SessionClientRole.AGENT:\n trackType = KnownMediaStream.AGENT_AUDIO_STREAM;\n break;\n case SessionClientRole.OBSERVER:\n trackType = KnownMediaStream.OBSERVER_AUDIO_STREAM;\n break;\n default:\n trackType = KnownMediaStream.USER_AUDIO_STREAM;\n break;\n }\n\n } else {\n trackType = KnownMediaStream.USER_VIDEO_STREAM;\n }\n\n const remoteMediaTrack: RemoteMediaTrack = {mediaTrack, trackType, isRegistered: false};\n\n sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);\n }\n\n protected registerPeersRemoteTracks(sourcePeerConnection: IMediaSessionPeer) {\n trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);\n sourcePeerConnection.remoteMediaTracks.forEach((remoteMediaTrack: RemoteMediaTrack) => {\n if (!remoteMediaTrack.isRegistered) {\n trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);\n this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack)\n .then(() => {\n remoteMediaTrack.isRegistered = true;\n })\n .catch((error: any) => {\n trace.warn('Error adding remote media track to available streams', error);\n });\n }\n });\n }\n\n protected unregisterPeersRemoteMediaTracks(peerConnection: PeerType): Promise<void> {\n const promises: Promise<any>[] = [];\n\n peerConnection.remoteMediaTracks.forEach((remoteMediaTrack) => {\n const removalPromise = this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack)\n .then(() => remoteMediaTrack.isRegistered = false)\n .catch(() => trace.warn('Error while removing remote media track', remoteMediaTrack));\n\n promises.push(removalPromise);\n });\n\n return Promise.all(promises).then(() => undefined);\n }\n\n protected getPeerConnectionByMediaTrack(mediaTrack: MediaStreamTrack): Nullable<PeerType> {\n let peerConnectionOfTrack: Nullable<PeerType> = null;\n\n this._peerConnections.forEach((peerConnection: PeerType) => {\n if (peerConnectionOfTrack !== null) {\n return;\n }\n\n const remoteTrack = peerConnection.remoteMediaTracks.filter((track) => track.mediaTrack.id === mediaTrack.id);\n\n if (remoteTrack.length === 1) {\n peerConnectionOfTrack = peerConnection;\n }\n });\n\n return peerConnectionOfTrack;\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.MediaSessionBase = exports.recordingEvents = void 0;
|
|
4
5
|
var MediaConstants_1 = require("../MediaConstants");
|
|
@@ -10,8 +11,8 @@ var recordingEvents;
|
|
|
10
11
|
recordingEvents["RECORD_STOPPED"] = "RECORD_STOPPED";
|
|
11
12
|
recordingEvents["RECONNECTING"] = "RECONNECTING";
|
|
12
13
|
})(recordingEvents = exports.recordingEvents || (exports.recordingEvents = {}));
|
|
13
|
-
var trace =
|
|
14
|
-
var MediaSessionBase =
|
|
14
|
+
var trace = MediaTracer_1.getMediaTracer('MediaSessionBase');
|
|
15
|
+
var MediaSessionBase = /** @class */function () {
|
|
15
16
|
function MediaSessionBase(sessionParams, streamFactory) {
|
|
16
17
|
this._sessionParams = sessionParams;
|
|
17
18
|
this._sessionStreamsManager = streamFactory;
|
|
@@ -28,8 +29,8 @@ var MediaSessionBase = (function () {
|
|
|
28
29
|
});
|
|
29
30
|
};
|
|
30
31
|
MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {
|
|
31
|
-
if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video &&
|
|
32
|
-
|
|
32
|
+
if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video && sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {
|
|
33
|
+
//Currently We don't support video streams from Agent side
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
36
|
var trackType = null;
|
|
@@ -45,8 +46,7 @@ var MediaSessionBase = (function () {
|
|
|
45
46
|
trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;
|
|
46
47
|
break;
|
|
47
48
|
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
49
|
+
} else {
|
|
50
50
|
trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;
|
|
51
51
|
}
|
|
52
52
|
var remoteMediaTrack = { mediaTrack: mediaTrack, trackType: trackType, isRegistered: false };
|
|
@@ -58,12 +58,9 @@ var MediaSessionBase = (function () {
|
|
|
58
58
|
sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
|
|
59
59
|
if (!remoteMediaTrack.isRegistered) {
|
|
60
60
|
trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);
|
|
61
|
-
_this._sessionStreamsManager
|
|
62
|
-
.addRemoteMediaTrack(remoteMediaTrack)
|
|
63
|
-
.then(function () {
|
|
61
|
+
_this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack).then(function () {
|
|
64
62
|
remoteMediaTrack.isRegistered = true;
|
|
65
|
-
})
|
|
66
|
-
.catch(function (error) {
|
|
63
|
+
}).catch(function (error) {
|
|
67
64
|
trace.warn('Error adding remote media track to available streams', error);
|
|
68
65
|
});
|
|
69
66
|
}
|
|
@@ -73,13 +70,16 @@ var MediaSessionBase = (function () {
|
|
|
73
70
|
var _this = this;
|
|
74
71
|
var promises = [];
|
|
75
72
|
peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {
|
|
76
|
-
var removalPromise = _this._sessionStreamsManager
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack).then(function () {
|
|
74
|
+
return remoteMediaTrack.isRegistered = false;
|
|
75
|
+
}).catch(function () {
|
|
76
|
+
return trace.warn('Error while removing remote media track', remoteMediaTrack);
|
|
77
|
+
});
|
|
80
78
|
promises.push(removalPromise);
|
|
81
79
|
});
|
|
82
|
-
return Promise.all(promises).then(function () {
|
|
80
|
+
return Promise.all(promises).then(function () {
|
|
81
|
+
return undefined;
|
|
82
|
+
});
|
|
83
83
|
};
|
|
84
84
|
MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {
|
|
85
85
|
var peerConnectionOfTrack = null;
|
|
@@ -87,7 +87,9 @@ var MediaSessionBase = (function () {
|
|
|
87
87
|
if (peerConnectionOfTrack !== null) {
|
|
88
88
|
return;
|
|
89
89
|
}
|
|
90
|
-
var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) {
|
|
90
|
+
var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) {
|
|
91
|
+
return track.mediaTrack.id === mediaTrack.id;
|
|
92
|
+
});
|
|
91
93
|
if (remoteTrack.length === 1) {
|
|
92
94
|
peerConnectionOfTrack = peerConnection;
|
|
93
95
|
}
|
|
@@ -95,6 +97,8 @@ var MediaSessionBase = (function () {
|
|
|
95
97
|
return peerConnectionOfTrack;
|
|
96
98
|
};
|
|
97
99
|
return MediaSessionBase;
|
|
98
|
-
}()
|
|
100
|
+
}();
|
|
99
101
|
exports.MediaSessionBase = MediaSessionBase;
|
|
100
|
-
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=MediaSessionBase.js.map
|
|
104
|
+
//# sourceMappingURL=MediaSessionBase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["MediaSession/MediaSessionBase.js"],"names":["Object","defineProperty","exports","value","MediaSessionBase","recordingEvents","MediaConstants_1","require","MediaTracer_1","events_1","trace","getMediaTracer","sessionParams","streamFactory","_sessionParams","_sessionStreamsManager","_emitter","EventEmitter","_peerConnections","Map","prototype","registerEventCallback","event","callback","on","emitEvent","eventArgs","_this","setTimeout","emit","addRemoteTrackToPeer","sourcePeerConnection","mediaTrack","kind","KnownMediaStreamKind","Video","peerRole","SessionClientRole","AGENT","trackType","toLowerCase","Audio","KnownMediaStream","AGENT_AUDIO_STREAM","OBSERVER","OBSERVER_AUDIO_STREAM","USER_AUDIO_STREAM","USER_VIDEO_STREAM","remoteMediaTrack","isRegistered","remoteMediaTracks","push","registerPeersRemoteTracks","info","forEach","addRemoteMediaTrack","then","catch","error","warn","unregisterPeersRemoteMediaTracks","peerConnection","promises","removalPromise","removeMediaTrack","Promise","all","undefined","getPeerConnectionByMediaTrack","peerConnectionOfTrack","remoteTrack","filter","track","id","length"],"mappings":"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","file":"MediaSessionBase.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MediaSessionBase = exports.recordingEvents = void 0;\nvar MediaConstants_1 = require(\"../MediaConstants\");\nvar MediaTracer_1 = require(\"../MediaUtils/MediaTracer\");\nvar events_1 = require(\"events\");\nvar recordingEvents;\n(function (recordingEvents) {\n recordingEvents[\"RECORD_STARTED\"] = \"RECORD_STARTED\";\n recordingEvents[\"RECORD_STOPPED\"] = \"RECORD_STOPPED\";\n recordingEvents[\"RECONNECTING\"] = \"RECONNECTING\";\n})(recordingEvents = exports.recordingEvents || (exports.recordingEvents = {}));\nvar trace = MediaTracer_1.getMediaTracer('MediaSessionBase');\nvar MediaSessionBase = /** @class */ (function () {\n function MediaSessionBase(sessionParams, streamFactory) {\n this._sessionParams = sessionParams;\n this._sessionStreamsManager = streamFactory;\n this._emitter = new events_1.EventEmitter();\n this._peerConnections = new Map();\n }\n MediaSessionBase.prototype.registerEventCallback = function (event, callback) {\n this._emitter.on(event, callback);\n };\n MediaSessionBase.prototype.emitEvent = function (event, eventArgs) {\n var _this = this;\n setTimeout(function () {\n _this._emitter.emit(event, eventArgs);\n });\n };\n MediaSessionBase.prototype.addRemoteTrackToPeer = function (sourcePeerConnection, mediaTrack) {\n if (mediaTrack.kind === MediaConstants_1.KnownMediaStreamKind.Video &&\n sourcePeerConnection.peerRole === MediaConstants_1.SessionClientRole.AGENT) {\n //Currently We don't support video streams from Agent side\n return;\n }\n var trackType = null;\n if (mediaTrack.kind.toLowerCase() === MediaConstants_1.KnownMediaStreamKind.Audio) {\n switch (sourcePeerConnection.peerRole) {\n case MediaConstants_1.SessionClientRole.AGENT:\n trackType = MediaConstants_1.KnownMediaStream.AGENT_AUDIO_STREAM;\n break;\n case MediaConstants_1.SessionClientRole.OBSERVER:\n trackType = MediaConstants_1.KnownMediaStream.OBSERVER_AUDIO_STREAM;\n break;\n default:\n trackType = MediaConstants_1.KnownMediaStream.USER_AUDIO_STREAM;\n break;\n }\n }\n else {\n trackType = MediaConstants_1.KnownMediaStream.USER_VIDEO_STREAM;\n }\n var remoteMediaTrack = { mediaTrack: mediaTrack, trackType: trackType, isRegistered: false };\n sourcePeerConnection.remoteMediaTracks.push(remoteMediaTrack);\n };\n MediaSessionBase.prototype.registerPeersRemoteTracks = function (sourcePeerConnection) {\n var _this = this;\n trace.info('registerPeersRemoteTracks', sourcePeerConnection && sourcePeerConnection.remoteMediaTracks);\n sourcePeerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n if (!remoteMediaTrack.isRegistered) {\n trace.info('call addRemoteMediaTrack with the remote media track', remoteMediaTrack);\n _this._sessionStreamsManager.addRemoteMediaTrack(remoteMediaTrack)\n .then(function () {\n remoteMediaTrack.isRegistered = true;\n })\n .catch(function (error) {\n trace.warn('Error adding remote media track to available streams', error);\n });\n }\n });\n };\n MediaSessionBase.prototype.unregisterPeersRemoteMediaTracks = function (peerConnection) {\n var _this = this;\n var promises = [];\n peerConnection.remoteMediaTracks.forEach(function (remoteMediaTrack) {\n var removalPromise = _this._sessionStreamsManager.removeMediaTrack(remoteMediaTrack.mediaTrack)\n .then(function () { return remoteMediaTrack.isRegistered = false; })\n .catch(function () { return trace.warn('Error while removing remote media track', remoteMediaTrack); });\n promises.push(removalPromise);\n });\n return Promise.all(promises).then(function () { return undefined; });\n };\n MediaSessionBase.prototype.getPeerConnectionByMediaTrack = function (mediaTrack) {\n var peerConnectionOfTrack = null;\n this._peerConnections.forEach(function (peerConnection) {\n if (peerConnectionOfTrack !== null) {\n return;\n }\n var remoteTrack = peerConnection.remoteMediaTracks.filter(function (track) { return track.mediaTrack.id === mediaTrack.id; });\n if (remoteTrack.length === 1) {\n peerConnectionOfTrack = peerConnection;\n }\n });\n return peerConnectionOfTrack;\n };\n return MediaSessionBase;\n}());\nexports.MediaSessionBase = MediaSessionBase;\n\n//# sourceMappingURL=MediaSessionBase.js.map\n"]}
|