@techsee/techsee-media-service 999.19.3-alphasap → 999.19.6-nodejs20
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 +27 -28
- package/lib/LocalStreamManager.d.ts +1 -0
- package/lib/LocalStreamManager.d.ts.map +1 -1
- package/lib/LocalStreamManager.js +82 -84
- package/lib/LocalStreamManager.js.map +1 -1
- package/lib/MediaConstants.d.ts +20 -3
- package/lib/MediaConstants.d.ts.map +1 -1
- package/lib/MediaConstants.js +31 -13
- package/lib/MediaConstants.js.map +1 -1
- package/lib/MediaContracts.d.ts +7 -1
- package/lib/MediaContracts.d.ts.map +1 -1
- package/lib/MediaContracts.js +1 -4
- 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 +7 -10
- 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 +169 -198
- 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 +62 -74
- 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 +19 -23
- 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 +51 -80
- 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 +109 -151
- 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 +1 -16
- 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 +37 -43
- package/lib/MediaSubscriber.js.map +1 -1
- package/lib/MediaUtils/Compatibility.d.ts +3 -0
- package/lib/MediaUtils/Compatibility.d.ts.map +1 -1
- package/lib/MediaUtils/Compatibility.js +76 -34
- package/lib/MediaUtils/Compatibility.js.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.d.ts +4 -2
- package/lib/MediaUtils/MediaDomUtils.d.ts.map +1 -1
- package/lib/MediaUtils/MediaDomUtils.js +64 -62
- 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 +2 -5
- package/lib/MediaUtils/MediaTracer.js.map +1 -1
- package/lib/MediaUtils/index.d.ts +2 -0
- package/lib/MediaUtils/index.d.ts.map +1 -0
- package/lib/MediaUtils/index.js +6 -0
- package/lib/MediaUtils/index.js.map +1 -0
- package/lib/MultiParty/DetectWebRtcService.d.ts +17 -14
- package/lib/MultiParty/DetectWebRtcService.d.ts.map +1 -1
- package/lib/MultiParty/DetectWebRtcService.js +98 -54
- package/lib/MultiParty/DetectWebRtcService.js.map +1 -1
- package/lib/MultiParty/MediaCapabilitiesService.d.ts +18 -0
- package/lib/MultiParty/MediaCapabilitiesService.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesService.js +158 -0
- package/lib/MultiParty/MediaCapabilitiesService.js.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts +6 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.d.ts.map +1 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js +123 -0
- package/lib/MultiParty/MediaCapabilitiesUtils.js.map +1 -0
- package/lib/MultiParty/MediaTracer.d.ts +4 -0
- package/lib/MultiParty/MediaTracer.d.ts.map +1 -0
- package/lib/MultiParty/MediaTracer.js +10 -0
- package/lib/MultiParty/MediaTracer.js.map +1 -0
- package/lib/MultiParty/MultiPartyService.d.ts +49 -0
- package/lib/MultiParty/MultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyService.js +30 -0
- package/lib/MultiParty/MultiPartyService.js.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts +4 -0
- package/lib/MultiParty/MultiPartyServiceFactory.d.ts.map +1 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js +13 -0
- package/lib/MultiParty/MultiPartyServiceFactory.js.map +1 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts +89 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.d.ts.map +1 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.js +16 -0
- package/lib/MultiParty/MultipartyServiceEventTypes.js.map +1 -0
- package/lib/MultiParty/index.d.ts +7 -0
- package/lib/MultiParty/index.d.ts.map +1 -0
- package/lib/MultiParty/index.js +25 -0
- package/lib/MultiParty/index.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts +38 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js +492 -0
- package/lib/MultiParty/opentok/OpentokMultiPartyService.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts +34 -0
- package/lib/MultiParty/opentok/OpentokPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisher.js +121 -0
- package/lib/MultiParty/opentok/OpentokPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts +20 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js +49 -0
- package/lib/MultiParty/opentok/OpentokPublisherEventMapper.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts +6 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js +48 -0
- package/lib/MultiParty/opentok/OpentokScreenPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts +2 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.js +26 -0
- package/lib/MultiParty/opentok/OpentokSubscriber.js.map +1 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts +19 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.d.ts.map +1 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js +182 -0
- package/lib/MultiParty/opentok/OpentokVideoPublisher.js.map +1 -0
- package/lib/MultiParty/opentok/trace.d.ts +3 -0
- package/lib/MultiParty/opentok/trace.d.ts.map +1 -0
- package/lib/MultiParty/opentok/trace.js +18 -0
- package/lib/MultiParty/opentok/trace.js.map +1 -0
- package/lib/MultiParty/opentok.d.ts +463 -0
- package/lib/MultiParty/types.d.ts +33 -0
- package/lib/MultiParty/types.d.ts.map +1 -0
- package/lib/MultiParty/types.js +3 -0
- package/lib/MultiParty/types.js.map +1 -0
- package/lib/MultiParty/utils.d.ts +10 -0
- package/lib/MultiParty/utils.d.ts.map +1 -0
- package/lib/MultiParty/utils.js +17 -0
- package/lib/MultiParty/utils.js.map +1 -0
- package/lib/TechseeMediaStream.d.ts +1 -0
- package/lib/TechseeMediaStream.d.ts.map +1 -1
- package/lib/TechseeMediaStream.js +9 -12
- 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 +84 -145
- 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 +1896 -2950
- package/lib/webrtc-ie-shim.js.map +1 -1
- package/package.json +66 -60
- package/lib/MultiParty/Contracts.d.ts +0 -11
- package/lib/MultiParty/Contracts.d.ts.map +0 -1
- package/lib/MultiParty/Contracts.js +0 -6
- package/lib/MultiParty/Contracts.js.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts +0 -12
- package/lib/MultiParty/MediaCapabilitiesHelper.d.ts.map +0 -1
- package/lib/MultiParty/MediaCapabilitiesHelper.js +0 -167
- package/lib/MultiParty/MediaCapabilitiesHelper.js.map +0 -1
- package/lib/MultiParty/MultiParty.d.ts +0 -21
- package/lib/MultiParty/MultiParty.d.ts.map +0 -1
- package/lib/MultiParty/MultiParty.js +0 -155
- package/lib/MultiParty/MultiParty.js.map +0 -1
- package/lib/MultiParty/MultipartyFactory.d.ts +0 -2
- package/lib/MultiParty/MultipartyFactory.d.ts.map +0 -1
- package/lib/MultiParty/MultipartyFactory.js +0 -15
- package/lib/MultiParty/MultipartyFactory.js.map +0 -1
- package/lib/MultiParty/OpentokMultiparty.d.ts +0 -24
- package/lib/MultiParty/OpentokMultiparty.d.ts.map +0 -1
- package/lib/MultiParty/OpentokMultiparty.js +0 -408
- package/lib/MultiParty/OpentokMultiparty.js.map +0 -1
- package/lib/oldCode/constants.js +0 -20
- package/lib/oldCode/constants.js.map +0 -1
- package/lib/oldCode/event-emitter.js +0 -39
- package/lib/oldCode/event-emitter.js.map +0 -1
- package/lib/oldCode/index.js +0 -64
- package/lib/oldCode/index.js.map +0 -1
- package/lib/oldCode/opentok/session.js +0 -310
- package/lib/oldCode/opentok/session.js.map +0 -1
- package/lib/oldCode/opentok/stream.js +0 -310
- package/lib/oldCode/opentok/stream.js.map +0 -1
- package/lib/oldCode/publisher.js +0 -143
- package/lib/oldCode/publisher.js.map +0 -1
- package/lib/oldCode/service.js +0 -395
- package/lib/oldCode/service.js.map +0 -1
- package/lib/oldCode/session.js +0 -110
- package/lib/oldCode/session.js.map +0 -1
- package/lib/oldCode/stream.js +0 -195
- package/lib/oldCode/stream.js.map +0 -1
- package/lib/oldCode/subscriber.js +0 -90
- package/lib/oldCode/subscriber.js.map +0 -1
- package/lib/oldCode/tracer.d.ts +0 -36
- package/lib/oldCode/tracer.d.ts.map +0 -1
- package/lib/oldCode/tracer.js +0 -161
- package/lib/oldCode/tracer.js.map +0 -1
- package/lib/oldCode/utils/ImageFixer.d.ts +0 -1
- package/lib/oldCode/utils/ImageFixer.d.ts.map +0 -1
- package/lib/oldCode/utils/ImageFixer.js +0 -59
- package/lib/oldCode/utils/ImageFixer.js.map +0 -1
- package/lib/oldCode/webrtc/constants.js +0 -114
- package/lib/oldCode/webrtc/constants.js.map +0 -1
- package/lib/oldCode/webrtc/helper.js +0 -173
- package/lib/oldCode/webrtc/helper.js.map +0 -1
- package/lib/oldCode/webrtc/session-kms.js +0 -558
- package/lib/oldCode/webrtc/session-kms.js.map +0 -1
- package/lib/oldCode/webrtc/session-loopback.js +0 -336
- package/lib/oldCode/webrtc/session-loopback.js.map +0 -1
- package/lib/oldCode/webrtc/session-turn.js +0 -880
- package/lib/oldCode/webrtc/session-turn.js.map +0 -1
- package/lib/oldCode/webrtc/session-turn.v2.js +0 -583
- package/lib/oldCode/webrtc/session-turn.v2.js.map +0 -1
- package/lib/oldCode/webrtc/session.js +0 -52
- package/lib/oldCode/webrtc/session.js.map +0 -1
- package/lib/oldCode/webrtc/stream.js +0 -674
- package/lib/oldCode/webrtc/stream.js.map +0 -1
- package/lib/oldCode/webrtc/temasys/adapter-loader.js +0 -12
- package/lib/oldCode/webrtc/temasys/adapter-loader.js.map +0 -1
- package/lib/oldCode/webrtc/temasys/adapter.js +0 -5861
- package/lib/oldCode/webrtc/temasys/adapter.js.map +0 -1
- package/lib/oldCode/webrtc/webrtc-ie-shim.js +0 -3007
- package/lib/oldCode/webrtc/webrtc-ie-shim.js.map +0 -1
package/lib/oldCode/service.js
DELETED
|
@@ -1,395 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.TsMediaService = exports.EVENTS = undefined;
|
|
5
|
-
|
|
6
|
-
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
7
|
-
|
|
8
|
-
var _tsEnvironmentDetect = require('@techsee/techsee-common/lib/helpers/ts-environment-detect');
|
|
9
|
-
|
|
10
|
-
var _eventEmitter = require('./event-emitter');
|
|
11
|
-
|
|
12
|
-
var _session = require('./session');
|
|
13
|
-
|
|
14
|
-
var _session2 = require('./opentok/session');
|
|
15
|
-
|
|
16
|
-
var _session3 = require('./webrtc/session');
|
|
17
|
-
|
|
18
|
-
var _helper = require('./webrtc/helper');
|
|
19
|
-
|
|
20
|
-
var _constants = require('./constants');
|
|
21
|
-
|
|
22
|
-
var _constants2 = require('./webrtc/constants');
|
|
23
|
-
|
|
24
|
-
var _tracer = require('./tracer');
|
|
25
|
-
|
|
26
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
27
|
-
|
|
28
|
-
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
29
|
-
|
|
30
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
31
|
-
|
|
32
|
-
var tracer = (0, _tracer.getTracer)();
|
|
33
|
-
|
|
34
|
-
var environmentDetect = new _tsEnvironmentDetect.TsEnvironmentDetect();
|
|
35
|
-
var isIE11 = environmentDetect.isIE11();
|
|
36
|
-
|
|
37
|
-
if (isIE11) {
|
|
38
|
-
require('./webrtc/webrtc-ie-shim.js');
|
|
39
|
-
} else if (!(environmentDetect.isChrome() && environmentDetect.majorVersion() < 49)) {
|
|
40
|
-
require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function _isOTDefined() {
|
|
44
|
-
try {
|
|
45
|
-
return !!OT;
|
|
46
|
-
} catch (e) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function _waitForOT() {
|
|
52
|
-
if (_isOTDefined()) {
|
|
53
|
-
return Promise.resolve();
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
var isDefined = false;
|
|
57
|
-
|
|
58
|
-
return Promise.reduce(new Array(_constants.WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS), function () {
|
|
59
|
-
if (isDefined || _isOTDefined()) {
|
|
60
|
-
isDefined = true;
|
|
61
|
-
|
|
62
|
-
return Promise.resolve();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return Promise.delay(_constants.WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);
|
|
66
|
-
}, 0).then(function () {
|
|
67
|
-
return isDefined || Promise.reject('OT is undefined');
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* @enum SERVICE_EVENTS
|
|
73
|
-
*/
|
|
74
|
-
var SERVICE_EVENTS = {
|
|
75
|
-
SESSION_CREATED: 'SESSION_CREATED',
|
|
76
|
-
EXCEPTION: 'EXCEPTION'
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
exports.EVENTS = SERVICE_EVENTS;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
var sessions = [];
|
|
83
|
-
var latestLocalStream = null;
|
|
84
|
-
var userMediaPromise = null;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* The top of hierarchy and the entry point of the TsMedia Service.
|
|
88
|
-
*
|
|
89
|
-
* @static
|
|
90
|
-
* @class
|
|
91
|
-
* @extends EventEmitter
|
|
92
|
-
*/
|
|
93
|
-
|
|
94
|
-
var TsMediaServiceFacade = function (_EventEmitter) {
|
|
95
|
-
_inherits(TsMediaServiceFacade, _EventEmitter);
|
|
96
|
-
|
|
97
|
-
function TsMediaServiceFacade() {
|
|
98
|
-
_classCallCheck(this, TsMediaServiceFacade);
|
|
99
|
-
|
|
100
|
-
var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));
|
|
101
|
-
|
|
102
|
-
_this.createLocalMediaStream = _this.createLocalMediaStream.bind(_this);
|
|
103
|
-
_this.destroyLocalMediaStream = _this.destroyLocalMediaStream.bind(_this);
|
|
104
|
-
return _this;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* All created sessoins
|
|
109
|
-
*
|
|
110
|
-
* @member { Object }
|
|
111
|
-
* @memberof TsMediaService
|
|
112
|
-
* @type { Array<TsMediaSession> }
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
TsMediaServiceFacade.prototype.createLocalMediaStream = function createLocalMediaStream(constraints) {
|
|
117
|
-
tracer.trace('createLocalMediaStream');
|
|
118
|
-
if (userMediaPromise) {
|
|
119
|
-
return userMediaPromise;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (latestLocalStream) {
|
|
123
|
-
var videoTrack = latestLocalStream.getVideoTracks();
|
|
124
|
-
if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {
|
|
125
|
-
return Promise.resolve(latestLocalStream);
|
|
126
|
-
} else {
|
|
127
|
-
this.destroyLocalMediaStream();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
userMediaPromise = new Promise(function (resolve, reject) {
|
|
132
|
-
try {
|
|
133
|
-
tracer.trace('createLocalMediaStream inside promise');
|
|
134
|
-
|
|
135
|
-
navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
|
|
136
|
-
latestLocalStream = stream;
|
|
137
|
-
userMediaPromise = null;
|
|
138
|
-
resolve(stream);
|
|
139
|
-
}).catch(function (err) {
|
|
140
|
-
userMediaPromise = null;
|
|
141
|
-
reject(err);
|
|
142
|
-
});
|
|
143
|
-
} catch (e) {
|
|
144
|
-
userMediaPromise = null;
|
|
145
|
-
reject(e);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
return userMediaPromise;
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
TsMediaServiceFacade.prototype.destroyLocalMediaStream = function destroyLocalMediaStream() {
|
|
153
|
-
tracer.trace('Destroy local streams');
|
|
154
|
-
if (latestLocalStream) {
|
|
155
|
-
latestLocalStream.getTracks().forEach(function (track) {
|
|
156
|
-
track.stop();
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
latestLocalStream = null;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
TsMediaServiceFacade.prototype.toggleMicrophone = function toggleMicrophone() {
|
|
164
|
-
var enableMic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
165
|
-
|
|
166
|
-
if (!latestLocalStream) {
|
|
167
|
-
return Promise.resolve();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
var audioTracks = latestLocalStream.getAudioTracks();
|
|
171
|
-
if (audioTracks.length > 0) {
|
|
172
|
-
audioTracks[0].enabled = enableMic;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
return Promise.resolve();
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Enumerate available media devices
|
|
180
|
-
*
|
|
181
|
-
* @method
|
|
182
|
-
* @memberof TsMediaService
|
|
183
|
-
* @returns { Promise<Array<MediaDeviceInfo>> } devices list
|
|
184
|
-
*
|
|
185
|
-
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}
|
|
186
|
-
*/
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
TsMediaServiceFacade.prototype.getDevices = function getDevices() {
|
|
190
|
-
if (typeof OT !== 'undefined' && OT && OT.getDevices) {
|
|
191
|
-
return new Promise(function (resolve, reject) {
|
|
192
|
-
OT.getDevices(function (error, devices) {
|
|
193
|
-
if (error) {
|
|
194
|
-
return reject(error);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return resolve(devices);
|
|
198
|
-
});
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
|
|
203
|
-
return navigator.mediaDevices.enumerateDevices();
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return Promise.reject('getDevices is not supported');
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Verifies camera access
|
|
211
|
-
*
|
|
212
|
-
* @method
|
|
213
|
-
* @memberof TsMediaService
|
|
214
|
-
* @returns { Promise<Object> } returns {stream,constraints} if successful, or rejected promise if failed
|
|
215
|
-
*
|
|
216
|
-
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}
|
|
217
|
-
*/
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
TsMediaServiceFacade.prototype.verifyCameraAccess = function verifyCameraAccess(deviceOpts) {
|
|
221
|
-
return (0, _helper.getHighestResolutionStream)(deviceOpts);
|
|
222
|
-
};
|
|
223
|
-
|
|
224
|
-
TsMediaServiceFacade.prototype.isVideoPlaySupportedOnDevice = function isVideoPlaySupportedOnDevice() {
|
|
225
|
-
if (!isIE11) {
|
|
226
|
-
return Promise.resolve(true);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
if (!!window.WebRTCAdapter) {
|
|
230
|
-
return Promise.resolve(true);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
if (window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled()) {
|
|
234
|
-
return Promise.resolve(true);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return Promise.resolve(false);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Init WebRTC or OpenTok session depends on required type.
|
|
242
|
-
*
|
|
243
|
-
* Returns an initialized specific implementation of TsMediaSession interface.
|
|
244
|
-
*
|
|
245
|
-
* Assuming mobile will be a publisher and not mobile will be a subscriber.
|
|
246
|
-
*
|
|
247
|
-
* @method
|
|
248
|
-
* @memberof TsMediaService
|
|
249
|
-
*
|
|
250
|
-
* @param { OPENTOK|MEDIASERVER|TURNSERVER } mediaServiceType required implementation
|
|
251
|
-
* @param { Boolean } isMobile Whether techsee-mobile or not calls this method.
|
|
252
|
-
* @param { Object } resolution constraint to use for video stream
|
|
253
|
-
* @param { opentok|tsMediaServer|turnServer } credentials server/service credentials
|
|
254
|
-
* @param { Object } deviceOpts requested devices (mainly audio/video device ids)
|
|
255
|
-
* @param { Boolean } isLoopback Whether to use loopback webrtc
|
|
256
|
-
*
|
|
257
|
-
* @returns { Promise<TsMediaSession> }
|
|
258
|
-
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
TsMediaServiceFacade.prototype.initSession = function initSession() {
|
|
262
|
-
var _this2 = this;
|
|
263
|
-
|
|
264
|
-
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
265
|
-
isMobile: false,
|
|
266
|
-
resolution: '640x480'
|
|
267
|
-
},
|
|
268
|
-
mediaServiceType = _ref.mediaServiceType,
|
|
269
|
-
isMobile = _ref.isMobile,
|
|
270
|
-
resolution = _ref.resolution,
|
|
271
|
-
credentials = _ref.credentials,
|
|
272
|
-
deviceOpts = _ref.deviceOpts,
|
|
273
|
-
isLoopback = _ref.isLoopback;
|
|
274
|
-
|
|
275
|
-
return Promise.resolve().then(function () {
|
|
276
|
-
if (mediaServiceType === _constants.MEDIA_SERVICE_TYPES.MEDIASERVER) {
|
|
277
|
-
//
|
|
278
|
-
// KMS CONNECTION
|
|
279
|
-
//
|
|
280
|
-
return Promise.resolve().then(function () {
|
|
281
|
-
var sessionOptions = {
|
|
282
|
-
isMobile: isMobile,
|
|
283
|
-
resolution: resolution,
|
|
284
|
-
|
|
285
|
-
credentials: credentials.tsMediaServer,
|
|
286
|
-
deviceOpts: deviceOpts || { audio: true, video: true }
|
|
287
|
-
};
|
|
288
|
-
|
|
289
|
-
return new _session3.KMSWebRTCSession(sessionOptions);
|
|
290
|
-
});
|
|
291
|
-
} else if (mediaServiceType === _constants.MEDIA_SERVICE_TYPES.TURNSERVER || isLoopback) {
|
|
292
|
-
//
|
|
293
|
-
// TURN-based connection or loopback (no connection)
|
|
294
|
-
//
|
|
295
|
-
return Promise.resolve().then(function () {
|
|
296
|
-
var creds = null;
|
|
297
|
-
|
|
298
|
-
if (!isLoopback) {
|
|
299
|
-
creds = mediaServiceType === _constants.MEDIA_SERVICE_TYPES.TURNSERVER ? credentials.turnServer : credentials.opentok;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
var sessionOptions = {
|
|
303
|
-
isMobile: isMobile,
|
|
304
|
-
resolution: resolution,
|
|
305
|
-
credentials: creds,
|
|
306
|
-
deviceOpts: deviceOpts || { audio: true, video: true }
|
|
307
|
-
};
|
|
308
|
-
|
|
309
|
-
if (isLoopback) {
|
|
310
|
-
return new _session3.LoopbackWebRTCSession(sessionOptions);
|
|
311
|
-
} else if (isMobile) {
|
|
312
|
-
return new _session3.TurnWebRTCSession(sessionOptions, _this2.createLocalMediaStream);
|
|
313
|
-
} else {
|
|
314
|
-
return _this2.getTurnMediaSessionV2(sessionOptions).then(function (mediaSession) {
|
|
315
|
-
_this2.subscribeTurnSessionEvents(mediaSession);
|
|
316
|
-
|
|
317
|
-
return mediaSession;
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
//
|
|
324
|
-
// OT CONNECTION (default mediaServiceType)
|
|
325
|
-
//
|
|
326
|
-
return Promise.resolve().then(function () {
|
|
327
|
-
return _waitForOT();
|
|
328
|
-
}).then(function () {
|
|
329
|
-
var sessionOptions = {
|
|
330
|
-
isMobile: isMobile,
|
|
331
|
-
resolution: resolution,
|
|
332
|
-
|
|
333
|
-
credentials: credentials.opentok
|
|
334
|
-
};
|
|
335
|
-
|
|
336
|
-
return new _session2.TsOpenTokSession(sessionOptions);
|
|
337
|
-
});
|
|
338
|
-
}).then(function (session) {
|
|
339
|
-
_this2.emit(SERVICE_EVENTS.SESSION_CREATED, session);
|
|
340
|
-
|
|
341
|
-
sessions.push(session);
|
|
342
|
-
|
|
343
|
-
return session;
|
|
344
|
-
});
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
TsMediaServiceFacade.prototype.getTurnMediaSessionV2 = function getTurnMediaSessionV2(sessionOptions) {
|
|
348
|
-
var _this3 = this;
|
|
349
|
-
|
|
350
|
-
return (0, _helper.getMediaConstraints)({
|
|
351
|
-
resolution: sessionOptions.resolution,
|
|
352
|
-
deviceOpts: sessionOptions.deviceOpts
|
|
353
|
-
}).then(function (constraints) {
|
|
354
|
-
var clientType = sessionOptions.isMobile ? _constants2.CLIENT_TYPES.INITIATOR : _constants2.CLIENT_TYPES.GUEST;
|
|
355
|
-
|
|
356
|
-
// streaming from dashboard is not supported and we
|
|
357
|
-
// don't want to access the camera without a reason
|
|
358
|
-
if (clientType === _constants2.CLIENT_TYPES.GUEST) {
|
|
359
|
-
delete constraints.video;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
var sessionParams = {
|
|
363
|
-
constraints: constraints,
|
|
364
|
-
clientType: clientType,
|
|
365
|
-
credentials: sessionOptions.credentials,
|
|
366
|
-
streamFactory: _this3.createLocalMediaStream
|
|
367
|
-
};
|
|
368
|
-
|
|
369
|
-
return new _session3.TurnWebRtcSessionV2(sessionParams);
|
|
370
|
-
});
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
TsMediaServiceFacade.prototype.subscribeTurnSessionEvents = function subscribeTurnSessionEvents(mediaSession) {
|
|
374
|
-
var _this4 = this;
|
|
375
|
-
|
|
376
|
-
var disconnectHandler = function disconnectHandler() {
|
|
377
|
-
_this4.destroyLocalMediaStream();
|
|
378
|
-
mediaSession.off(_session.SESSION_EVENTS.DISCONNECTED, disconnectHandler);
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
mediaSession.on(_session.SESSION_EVENTS.DISCONNECTED, disconnectHandler);
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
_createClass(TsMediaServiceFacade, [{
|
|
385
|
-
key: 'sessions',
|
|
386
|
-
get: function get() {
|
|
387
|
-
return sessions;
|
|
388
|
-
}
|
|
389
|
-
}]);
|
|
390
|
-
|
|
391
|
-
return TsMediaServiceFacade;
|
|
392
|
-
}(_eventEmitter.EventEmitter);
|
|
393
|
-
|
|
394
|
-
var TsMediaService = exports.TsMediaService = new TsMediaServiceFacade();
|
|
395
|
-
//# sourceMappingURL=service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["oldCode/service.js"],"names":["tracer","environmentDetect","TsEnvironmentDetect","isIE11","require","isChrome","majorVersion","_isOTDefined","OT","e","_waitForOT","Promise","resolve","isDefined","reduce","Array","WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS","delay","WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL","then","reject","SERVICE_EVENTS","SESSION_CREATED","EXCEPTION","EVENTS","sessions","latestLocalStream","userMediaPromise","TsMediaServiceFacade","createLocalMediaStream","bind","destroyLocalMediaStream","constraints","trace","videoTrack","getVideoTracks","length","readyState","navigator","mediaDevices","getUserMedia","stream","catch","err","getTracks","forEach","track","stop","toggleMicrophone","enableMic","audioTracks","getAudioTracks","enabled","getDevices","error","devices","enumerateDevices","verifyCameraAccess","deviceOpts","isVideoPlaySupportedOnDevice","window","WebRTCAdapter","OTPlugin","isInstalled","initSession","isMobile","resolution","mediaServiceType","credentials","isLoopback","MEDIA_SERVICE_TYPES","MEDIASERVER","sessionOptions","tsMediaServer","audio","video","KMSWebRTCSession","TURNSERVER","creds","turnServer","opentok","LoopbackWebRTCSession","TurnWebRTCSession","getTurnMediaSessionV2","mediaSession","subscribeTurnSessionEvents","TsOpenTokSession","session","emit","push","clientType","CLIENT_TYPES","INITIATOR","GUEST","sessionParams","streamFactory","TurnWebRtcSessionV2","disconnectHandler","off","SESSION_EVENTS","DISCONNECTED","on","EventEmitter","TsMediaService"],"mappings":"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","file":"service.js","sourcesContent":["import {TsEnvironmentDetect} from '@techsee/techsee-common/lib/helpers/ts-environment-detect';\nimport {EventEmitter} from './event-emitter';\nimport {SESSION_EVENTS} from './session';\nimport {TsOpenTokSession} from './opentok/session';\nimport {KMSWebRTCSession, LoopbackWebRTCSession, TurnWebRTCSession, TurnWebRtcSessionV2} from './webrtc/session';\nimport {getHighestResolutionStream, getMediaConstraints} from './webrtc/helper';\n\nimport {\n MEDIA_SERVICE_TYPES,\n WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL,\n WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS\n} from './constants';\nimport {CLIENT_TYPES} from './webrtc/constants';\nimport {getTracer} from './tracer';\n\nconst tracer = getTracer();\n\n\nconst environmentDetect = new TsEnvironmentDetect();\nconst isIE11 = environmentDetect.isIE11();\n\nif (isIE11) {\n require('./webrtc/webrtc-ie-shim.js');\n} else if (!(environmentDetect.isChrome() && (environmentDetect.majorVersion() < 49))) {\n require('webrtc-adapter/src/js/adapter_core'); // eslint-disable-line global-require\n}\n\nfunction _isOTDefined() {\n try {\n return !!OT;\n } catch (e) {\n return false;\n }\n}\n\nfunction _waitForOT() {\n if (_isOTDefined()) {\n return Promise.resolve();\n }\n\n let isDefined = false;\n\n return Promise.reduce(\n new Array(WAIT_FOR_OPENTOK_INITIALIZATION_MAX_ATTEMPTS),\n () => {\n if (isDefined || _isOTDefined()) {\n isDefined = true;\n\n return Promise.resolve();\n }\n\n return Promise.delay(WAIT_FOR_OPENTOK_INITIALIZATION_INTERVAL);\n }, 0)\n .then(() => isDefined || Promise.reject('OT is undefined'));\n}\n\n/**\n * @enum SERVICE_EVENTS\n */\nconst SERVICE_EVENTS = {\n SESSION_CREATED: 'SESSION_CREATED',\n EXCEPTION: 'EXCEPTION'\n};\n\nexport {SERVICE_EVENTS as EVENTS};\n\nconst sessions = [];\nlet latestLocalStream = null;\nlet userMediaPromise = null;\n\n/**\n * The top of hierarchy and the entry point of the TsMedia Service.\n *\n * @static\n * @class\n * @extends EventEmitter\n */\nclass TsMediaServiceFacade extends EventEmitter {\n constructor() {\n super();\n\n this.createLocalMediaStream = this.createLocalMediaStream.bind(this);\n this.destroyLocalMediaStream = this.destroyLocalMediaStream.bind(this);\n }\n\n /**\n * All created sessoins\n *\n * @member { Object }\n * @memberof TsMediaService\n * @type { Array<TsMediaSession> }\n */\n get sessions() {\n return sessions;\n }\n\n createLocalMediaStream(constraints) {\n tracer.trace('createLocalMediaStream');\n if (userMediaPromise) {\n return userMediaPromise;\n }\n\n if (latestLocalStream) {\n const videoTrack = latestLocalStream.getVideoTracks();\n if (videoTrack.length > 0 && videoTrack[0].readyState === 'live') {\n return Promise.resolve(latestLocalStream);\n } else {\n this.destroyLocalMediaStream();\n }\n }\n\n userMediaPromise = new Promise((resolve, reject) => {\n try {\n tracer.trace('createLocalMediaStream inside promise');\n\n navigator.mediaDevices.getUserMedia(constraints)\n .then((stream) => {\n latestLocalStream = stream;\n userMediaPromise = null;\n resolve(stream);\n })\n .catch((err) => {\n userMediaPromise = null;\n reject(err);\n });\n } catch (e) {\n userMediaPromise = null;\n reject(e);\n }\n });\n\n return userMediaPromise;\n }\n\n destroyLocalMediaStream() {\n tracer.trace('Destroy local streams');\n if (latestLocalStream) {\n latestLocalStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n\n latestLocalStream = null;\n }\n\n toggleMicrophone(enableMic = true) {\n if (!latestLocalStream) {\n return Promise.resolve();\n }\n\n const audioTracks = latestLocalStream.getAudioTracks();\n if (audioTracks.length > 0) {\n audioTracks[0].enabled = enableMic;\n }\n\n return Promise.resolve();\n }\n\n /**\n * Enumerate available media devices\n *\n * @method\n * @memberof TsMediaService\n * @returns { Promise<Array<MediaDeviceInfo>> } devices list\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}\n */\n getDevices() {\n if ((typeof OT !== 'undefined') && OT && OT.getDevices) {\n return new Promise((resolve, reject) => {\n OT.getDevices((error, devices) => {\n if (error) {\n return reject(error);\n }\n\n return resolve(devices);\n });\n });\n }\n\n if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {\n return navigator.mediaDevices.enumerateDevices();\n }\n\n return Promise.reject('getDevices is not supported');\n }\n\n /**\n * Verifies camera access\n *\n * @method\n * @memberof TsMediaService\n * @returns { Promise<Object> } returns {stream,constraints} if successful, or rejected promise if failed\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo | MediaDeviceInfo documentation}\n */\n verifyCameraAccess(deviceOpts) {\n return getHighestResolutionStream(deviceOpts);\n }\n\n isVideoPlaySupportedOnDevice() {\n if (!isIE11) {\n return Promise.resolve(true);\n }\n\n if (!!window.WebRTCAdapter) {\n return Promise.resolve(true);\n }\n\n if (window.OT && window.OTPlugin && window.OTPlugin.isInstalled && window.OTPlugin.isInstalled()) {\n return Promise.resolve(true);\n }\n\n return Promise.resolve(false);\n }\n\n /**\n * Init WebRTC or OpenTok session depends on required type.\n *\n * Returns an initialized specific implementation of TsMediaSession interface.\n *\n * Assuming mobile will be a publisher and not mobile will be a subscriber.\n *\n * @method\n * @memberof TsMediaService\n *\n * @param { OPENTOK|MEDIASERVER|TURNSERVER } mediaServiceType required implementation\n * @param { Boolean } isMobile Whether techsee-mobile or not calls this method.\n * @param { Object } resolution constraint to use for video stream\n * @param { opentok|tsMediaServer|turnServer } credentials server/service credentials\n * @param { Object } deviceOpts requested devices (mainly audio/video device ids)\n * @param { Boolean } isLoopback Whether to use loopback webrtc\n *\n * @returns { Promise<TsMediaSession> }\n */\n initSession({\n mediaServiceType,\n isMobile,\n resolution,\n credentials,\n deviceOpts,\n isLoopback\n } = {\n isMobile: false,\n resolution: '640x480'\n }) {\n return Promise.resolve()\n .then(() => {\n if (mediaServiceType === MEDIA_SERVICE_TYPES.MEDIASERVER) {\n //\n // KMS CONNECTION\n //\n return Promise.resolve()\n .then(() => {\n const sessionOptions = {\n isMobile,\n resolution,\n\n credentials: credentials.tsMediaServer,\n deviceOpts: deviceOpts || {audio: true, video: true}\n };\n\n return new KMSWebRTCSession(sessionOptions);\n });\n } else if (mediaServiceType === MEDIA_SERVICE_TYPES.TURNSERVER || isLoopback) {\n //\n // TURN-based connection or loopback (no connection)\n //\n return Promise.resolve()\n .then(() => {\n let creds = null;\n\n if (!isLoopback) {\n creds = (mediaServiceType === MEDIA_SERVICE_TYPES.TURNSERVER) ? credentials.turnServer : credentials.opentok;\n }\n\n const sessionOptions = {\n isMobile,\n resolution,\n credentials: creds,\n deviceOpts: deviceOpts || {audio: true, video: true}\n };\n\n if (isLoopback) {\n return new LoopbackWebRTCSession(sessionOptions);\n } else if (isMobile) {\n return new TurnWebRTCSession(sessionOptions, this.createLocalMediaStream);\n } else {\n return this.getTurnMediaSessionV2(sessionOptions)\n .then((mediaSession) => {\n this.subscribeTurnSessionEvents(mediaSession);\n\n return mediaSession;\n });\n }\n });\n }\n\n //\n // OT CONNECTION (default mediaServiceType)\n //\n return Promise.resolve()\n .then(() => _waitForOT())\n .then(() => {\n const sessionOptions = {\n isMobile,\n resolution,\n\n credentials: credentials.opentok\n };\n\n return new TsOpenTokSession(sessionOptions);\n });\n })\n .then((session) => {\n this.emit(SERVICE_EVENTS.SESSION_CREATED, session);\n\n sessions.push(session);\n\n return session;\n });\n }\n\n getTurnMediaSessionV2(sessionOptions) {\n return getMediaConstraints({\n resolution: sessionOptions.resolution,\n deviceOpts: sessionOptions.deviceOpts\n }).then((constraints) => {\n const clientType = sessionOptions.isMobile ? CLIENT_TYPES.INITIATOR : CLIENT_TYPES.GUEST;\n\n // streaming from dashboard is not supported and we\n // don't want to access the camera without a reason\n if (clientType === CLIENT_TYPES.GUEST) {\n delete constraints.video;\n }\n\n const sessionParams = {\n constraints,\n clientType,\n credentials: sessionOptions.credentials,\n streamFactory: this.createLocalMediaStream\n };\n\n return new TurnWebRtcSessionV2(sessionParams);\n });\n }\n\n subscribeTurnSessionEvents(mediaSession) {\n const disconnectHandler = () => {\n this.destroyLocalMediaStream();\n mediaSession.off(SESSION_EVENTS.DISCONNECTED, disconnectHandler);\n };\n\n mediaSession.on(SESSION_EVENTS.DISCONNECTED, disconnectHandler);\n }\n}\n\nexport const TsMediaService = new TsMediaServiceFacade();\n"]}
|
package/lib/oldCode/session.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.TsMediaSession = exports.EVENTS = exports.SESSION_EVENTS = undefined;
|
|
5
|
-
|
|
6
|
-
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
7
|
-
|
|
8
|
-
var _eventEmitter = require('./event-emitter');
|
|
9
|
-
|
|
10
|
-
var _stream = require('./stream');
|
|
11
|
-
|
|
12
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
13
|
-
|
|
14
|
-
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
15
|
-
|
|
16
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @enum SESSION_EVENTS
|
|
20
|
-
*/
|
|
21
|
-
var SESSION_EVENTS = exports.SESSION_EVENTS = {
|
|
22
|
-
CONNECTED: 'CONNECTED',
|
|
23
|
-
DISCONNECTED: 'DISCONNECTED',
|
|
24
|
-
EXCEPTION: 'EXCEPTION',
|
|
25
|
-
STREAM_CREATED: 'STREAM_CREATED',
|
|
26
|
-
STREAM_DESTROYED: 'STREAM_DESTROYED',
|
|
27
|
-
STREAM_PROPERTY_CHANGED: 'STREAM_PROPERTY_CHANGED',
|
|
28
|
-
RECONNECT_TURN_SERVER: 'RECONNECT_TURN_SERVER',
|
|
29
|
-
TURN_SERVER_CONNECTION_FAILED: 'TURN_SERVER_CONNECTION_FAILED',
|
|
30
|
-
PEER_CONNECTED: 'PEER_CONNECTED',
|
|
31
|
-
PEER_DISCONNECTED: 'PEER_DISCONNECTED'
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
exports.EVENTS = SESSION_EVENTS;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Session object returned by TsMediaSercice.initSession() call.
|
|
38
|
-
* <br>
|
|
39
|
-
* Represents connection to OpenTok server or TsMediaServer.
|
|
40
|
-
* <br>
|
|
41
|
-
* General interface for the specific implementations - TsOpenTokSession and TsWebRTCSession
|
|
42
|
-
*
|
|
43
|
-
* @interface
|
|
44
|
-
* @extends EventEmitter
|
|
45
|
-
*
|
|
46
|
-
* @fires SESSION_EVENTS#CONNECTED
|
|
47
|
-
* @fires SESSION_EVENTS#DISCONNECTED
|
|
48
|
-
* @fires SESSION_EVENTS#EXCEPTION
|
|
49
|
-
* @fires SESSION_EVENTS#STREAM_CREATED
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
var TsMediaSession = exports.TsMediaSession = function (_EventEmitter) {
|
|
53
|
-
_inherits(TsMediaSession, _EventEmitter);
|
|
54
|
-
|
|
55
|
-
function TsMediaSession() {
|
|
56
|
-
_classCallCheck(this, TsMediaSession);
|
|
57
|
-
|
|
58
|
-
var _this = _possibleConstructorReturn(this, _EventEmitter.call(this));
|
|
59
|
-
|
|
60
|
-
_this._streams = new Map();
|
|
61
|
-
|
|
62
|
-
_this.on(SESSION_EVENTS.STREAM_PROPERTY_CHANGED, function (event) {
|
|
63
|
-
if (event.stream) {
|
|
64
|
-
event.stream.emit(_stream.EVENTS.PROPERTY_CHANGED, event);
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
return _this;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* All media streams registered in the session.
|
|
72
|
-
*
|
|
73
|
-
* @member { Object }
|
|
74
|
-
* @type { Array<TsMediaStream> }
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Register new media stream in the session.
|
|
80
|
-
*
|
|
81
|
-
* Called internally by TsMediaStream constructor.
|
|
82
|
-
*
|
|
83
|
-
* @method
|
|
84
|
-
* @param { String } id Stream id
|
|
85
|
-
* @param { TsMediaStream } stream Media Stream
|
|
86
|
-
*/
|
|
87
|
-
TsMediaSession.prototype.registerStream = function registerStream(id, stream) {
|
|
88
|
-
this._streams.set(id, stream);
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
TsMediaSession.prototype.unregisterStream = function unregisterStream(id) {
|
|
92
|
-
this._streams.delete(id);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
_createClass(TsMediaSession, [{
|
|
96
|
-
key: 'streams',
|
|
97
|
-
get: function get() {
|
|
98
|
-
var streamArray = [];
|
|
99
|
-
|
|
100
|
-
this._streams.forEach(function (stream) {
|
|
101
|
-
return streamArray.push(stream);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return streamArray;
|
|
105
|
-
}
|
|
106
|
-
}]);
|
|
107
|
-
|
|
108
|
-
return TsMediaSession;
|
|
109
|
-
}(_eventEmitter.EventEmitter);
|
|
110
|
-
//# sourceMappingURL=session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["oldCode/session.js"],"names":["SESSION_EVENTS","CONNECTED","DISCONNECTED","EXCEPTION","STREAM_CREATED","STREAM_DESTROYED","STREAM_PROPERTY_CHANGED","RECONNECT_TURN_SERVER","TURN_SERVER_CONNECTION_FAILED","PEER_CONNECTED","PEER_DISCONNECTED","EVENTS","TsMediaSession","_streams","Map","on","event","stream","emit","STREAM_EVENTS","PROPERTY_CHANGED","registerStream","id","set","unregisterStream","delete","streamArray","forEach","push","EventEmitter"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;AAEA;;;AAGO,IAAMA,0CAAiB;AAC1BC,eAAW,WADe;AAE1BC,kBAAc,cAFY;AAG1BC,eAAW,WAHe;AAI1BC,oBAAgB,gBAJU;AAK1BC,sBAAkB,kBALQ;AAM1BC,6BAAyB,yBANC;AAO1BC,2BAAuB,uBAPG;AAQ1BC,mCAA+B,+BARL;AAS1BC,oBAAgB,gBATU;AAU1BC,uBAAmB;AAVO,CAAvB;;QAamBC,M,GAAlBX,c;;AAER;;;;;;;;;;;;;;;;IAeaY,c,WAAAA,c;;;AACT,8BAAc;AAAA;;AAAA,qDACV,wBADU;;AAGV,cAAKC,QAAL,GAAgB,IAAIC,GAAJ,EAAhB;;AAEA,cAAKC,EAAL,CAAQf,eAAeM,uBAAvB,EAAgD,UAACU,KAAD,EAAW;AACvD,gBAAIA,MAAMC,MAAV,EAAkB;AACdD,sBAAMC,MAAN,CAAaC,IAAb,CAAkBC,eAAcC,gBAAhC,EAAkDJ,KAAlD;AACH;AACJ,SAJD;AALU;AAUb;;AAED;;;;;;;;AAcA;;;;;;;;;6BASAK,c,2BAAeC,E,EAAIL,M,EAAQ;AACvB,aAAKJ,QAAL,CAAcU,GAAd,CAAkBD,EAAlB,EAAsBL,MAAtB;AACH,K;;6BAEDO,gB,6BAAiBF,E,EAAI;AACjB,aAAKT,QAAL,CAAcY,MAAd,CAAqBH,EAArB;AACH,K;;;;4BAvBa;AACV,gBAAMI,cAAc,EAApB;;AAEA,iBAAKb,QAAL,CAAcc,OAAd,CAAsB,UAACV,MAAD;AAAA,uBAAYS,YAAYE,IAAZ,CAAiBX,MAAjB,CAAZ;AAAA,aAAtB;;AAEA,mBAAOS,WAAP;AACH;;;;EAzB+BG,0B","file":"session.js","sourcesContent":["import {EventEmitter} from './event-emitter';\n\nimport {EVENTS as STREAM_EVENTS} from './stream';\n\n/**\n * @enum SESSION_EVENTS\n */\nexport const SESSION_EVENTS = {\n CONNECTED: 'CONNECTED',\n DISCONNECTED: 'DISCONNECTED',\n EXCEPTION: 'EXCEPTION',\n STREAM_CREATED: 'STREAM_CREATED',\n STREAM_DESTROYED: 'STREAM_DESTROYED',\n STREAM_PROPERTY_CHANGED: 'STREAM_PROPERTY_CHANGED',\n RECONNECT_TURN_SERVER: 'RECONNECT_TURN_SERVER',\n TURN_SERVER_CONNECTION_FAILED: 'TURN_SERVER_CONNECTION_FAILED',\n PEER_CONNECTED: 'PEER_CONNECTED',\n PEER_DISCONNECTED: 'PEER_DISCONNECTED'\n};\n\nexport {SESSION_EVENTS as EVENTS};\n\n/**\n * Session object returned by TsMediaSercice.initSession() call.\n * <br>\n * Represents connection to OpenTok server or TsMediaServer.\n * <br>\n * General interface for the specific implementations - TsOpenTokSession and TsWebRTCSession\n *\n * @interface\n * @extends EventEmitter\n *\n * @fires SESSION_EVENTS#CONNECTED\n * @fires SESSION_EVENTS#DISCONNECTED\n * @fires SESSION_EVENTS#EXCEPTION\n * @fires SESSION_EVENTS#STREAM_CREATED\n */\nexport class TsMediaSession extends EventEmitter {\n constructor() {\n super();\n\n this._streams = new Map();\n\n this.on(SESSION_EVENTS.STREAM_PROPERTY_CHANGED, (event) => {\n if (event.stream) {\n event.stream.emit(STREAM_EVENTS.PROPERTY_CHANGED, event);\n }\n });\n }\n\n /**\n * All media streams registered in the session.\n *\n * @member { Object }\n * @type { Array<TsMediaStream> }\n */\n get streams() {\n const streamArray = [];\n\n this._streams.forEach((stream) => streamArray.push(stream));\n\n return streamArray;\n }\n\n /**\n * Register new media stream in the session.\n *\n * Called internally by TsMediaStream constructor.\n *\n * @method\n * @param { String } id Stream id\n * @param { TsMediaStream } stream Media Stream\n */\n registerStream(id, stream) {\n this._streams.set(id, stream);\n }\n\n unregisterStream(id) {\n this._streams.delete(id);\n }\n}\n\n"]}
|