@flashphoner/websdk 2.0.212 → 2.0.217
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/docTemplate/README.md +1 -1
- package/examples/demo/streaming/conference/conference.html +4 -0
- package/examples/demo/streaming/conference/conference.js +203 -62
- package/examples/demo/streaming/video-chat/video-chat.html +5 -0
- package/flashphoner-no-flash.js +1128 -818
- package/flashphoner-no-flash.min.js +2 -2
- package/flashphoner-no-webrtc.js +1122 -812
- package/flashphoner-no-webrtc.min.js +2 -2
- package/flashphoner-no-wsplayer.js +1128 -818
- package/flashphoner-no-wsplayer.min.js +2 -2
- package/flashphoner-room-api.js +1112 -908
- package/flashphoner-room-api.min.js +2 -2
- package/flashphoner-temasys-flash-websocket-without-adapterjs.js +1129 -814
- package/flashphoner-temasys-flash-websocket.js +1127 -812
- package/flashphoner-temasys-flash-websocket.min.js +1 -1
- package/flashphoner-webrtc-only.js +1122 -817
- package/flashphoner-webrtc-only.min.js +1 -1
- package/flashphoner.js +1134 -819
- package/flashphoner.min.js +2 -2
- package/package.json +1 -1
- package/src/constants.d.ts +792 -1
- package/src/constants.js +790 -704
- package/src/flash-media-provider.js +5 -0
- package/src/flashphoner-core.d.ts +359 -209
- package/src/flashphoner-core.js +98 -29
- package/src/room-module.d.ts +2 -2
- package/src/room-module.js +9 -2
- package/src/temasys-media-provider.js +5 -0
- package/src/util.js +207 -185
- package/src/webrtc-media-provider.js +12 -7
- package/src/websocket-media-provider.js +5 -0
package/src/flashphoner-core.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
const { v1: uuid_v1 } = require('uuid');
|
|
4
4
|
var constants = require("./constants");
|
|
5
5
|
var util = require('./util');
|
|
6
|
-
var
|
|
6
|
+
var LoggerObject = require('./util').logger;
|
|
7
|
+
var coreLogger;
|
|
7
8
|
var loggerConf = {push: false, severity: "INFO"};
|
|
8
9
|
var Promise = require('promise-polyfill');
|
|
9
10
|
var KalmanFilter = require('kalmanjs');
|
|
@@ -46,7 +47,7 @@ var disableConnectionQualityCalculation;
|
|
|
46
47
|
* @param {String=} options.decoderLocation Location of video-worker2.js file
|
|
47
48
|
* @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
|
|
48
49
|
* @param {Object=} options.constraints Default local media constraints
|
|
49
|
-
* @param {Object=} options.logger
|
|
50
|
+
* @param {Object=} options.logger Core logger options
|
|
50
51
|
* @throws {Error} Error if none of MediaProviders available
|
|
51
52
|
* @memberof Flashphoner
|
|
52
53
|
*/
|
|
@@ -55,12 +56,8 @@ var init = function (options) {
|
|
|
55
56
|
if (!options) {
|
|
56
57
|
options = {};
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
loggerConf.enableLogs = true;
|
|
61
|
-
}
|
|
62
|
-
// init logger
|
|
63
|
-
logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
|
|
59
|
+
// init global logger
|
|
60
|
+
coreLogger = createLogger(options.logger);
|
|
64
61
|
var waitingTemasys = false;
|
|
65
62
|
try {
|
|
66
63
|
var audioContext = new (window.AudioContext || window.webkitAudioContext)();
|
|
@@ -77,7 +74,7 @@ var init = function (options) {
|
|
|
77
74
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
78
75
|
extensionId: options.screenSharingExtensionId,
|
|
79
76
|
audioContext: audioContext,
|
|
80
|
-
logger:
|
|
77
|
+
logger: coreLogger,
|
|
81
78
|
createMicGainNode: enableGainNode
|
|
82
79
|
};
|
|
83
80
|
webRtcProvider.configure(webRtcConf);
|
|
@@ -92,7 +89,7 @@ var init = function (options) {
|
|
|
92
89
|
var webRtcConf = {
|
|
93
90
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
94
91
|
extensionId: options.screenSharingExtensionId,
|
|
95
|
-
logger:
|
|
92
|
+
logger: coreLogger
|
|
96
93
|
};
|
|
97
94
|
webRtcProvider.configure(webRtcConf);
|
|
98
95
|
|
|
@@ -118,7 +115,7 @@ var init = function (options) {
|
|
|
118
115
|
var flashConf = {
|
|
119
116
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
120
117
|
flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
|
|
121
|
-
logger:
|
|
118
|
+
logger: coreLogger
|
|
122
119
|
};
|
|
123
120
|
flashProvider.configure(flashConf);
|
|
124
121
|
}
|
|
@@ -138,7 +135,7 @@ var init = function (options) {
|
|
|
138
135
|
receiverLocation: options.receiverLocation,
|
|
139
136
|
decoderLocation: options.decoderLocation,
|
|
140
137
|
audioContext: audioContext,
|
|
141
|
-
logger:
|
|
138
|
+
logger: coreLogger
|
|
142
139
|
};
|
|
143
140
|
websocketProvider.configure(wsConf);
|
|
144
141
|
}
|
|
@@ -158,7 +155,7 @@ var init = function (options) {
|
|
|
158
155
|
MediaProvider = _MediaProvider;
|
|
159
156
|
}
|
|
160
157
|
} else {
|
|
161
|
-
|
|
158
|
+
corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
|
|
162
159
|
}
|
|
163
160
|
}
|
|
164
161
|
if (options.preferredMediaProviders && options.preferredMediaProviders.length > 0) {
|
|
@@ -181,7 +178,7 @@ var init = function (options) {
|
|
|
181
178
|
if (!waitingTemasys && options.mediaProvidersReadyCallback) {
|
|
182
179
|
options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
|
|
183
180
|
}
|
|
184
|
-
|
|
181
|
+
coreLogger.info(LOG_PREFIX, "Initialized");
|
|
185
182
|
initialized = true;
|
|
186
183
|
}
|
|
187
184
|
};
|
|
@@ -219,17 +216,16 @@ var playFirstVideo = function (display, isLocal, src) {
|
|
|
219
216
|
};
|
|
220
217
|
|
|
221
218
|
/**
|
|
222
|
-
* Get logger
|
|
219
|
+
* Get core logger
|
|
223
220
|
*
|
|
224
221
|
* @returns {Object} Logger
|
|
225
222
|
* @memberof Flashphoner
|
|
226
223
|
*/
|
|
227
|
-
|
|
228
224
|
var getLogger = function () {
|
|
229
225
|
if (!initialized) {
|
|
230
226
|
console.warn("Initialize API first.");
|
|
231
227
|
} else {
|
|
232
|
-
return
|
|
228
|
+
return coreLogger;
|
|
233
229
|
}
|
|
234
230
|
}
|
|
235
231
|
|
|
@@ -388,6 +384,26 @@ var getSession = function (id) {
|
|
|
388
384
|
return sessions[id];
|
|
389
385
|
};
|
|
390
386
|
|
|
387
|
+
// Get logger configuration from options
|
|
388
|
+
var getLoggerConf = function(loggerOptions) {
|
|
389
|
+
var conf = loggerOptions || loggerConf;
|
|
390
|
+
if (loggerOptions !== null) {
|
|
391
|
+
conf.enableLogs = true;
|
|
392
|
+
}
|
|
393
|
+
return conf;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Create a new logger object
|
|
397
|
+
var createLogger = function(loggerOptions, parentLogger = coreLogger) {
|
|
398
|
+
var newLogger = parentLogger;
|
|
399
|
+
if (newLogger === undefined || loggerOptions != undefined) {
|
|
400
|
+
var loggerConf = getLoggerConf(loggerOptions);
|
|
401
|
+
newLogger = new LoggerObject;
|
|
402
|
+
newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
|
|
403
|
+
}
|
|
404
|
+
return newLogger;
|
|
405
|
+
}
|
|
406
|
+
|
|
391
407
|
/**
|
|
392
408
|
* Create new session and connect to server.
|
|
393
409
|
*
|
|
@@ -406,6 +422,7 @@ var getSession = function (id) {
|
|
|
406
422
|
* @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
|
|
407
423
|
* @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
|
|
408
424
|
* @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
|
|
425
|
+
* @param {Object=} options.logger Session logger options
|
|
409
426
|
* @returns {Session} Created session
|
|
410
427
|
* @throws {Error} Error if API is not initialized
|
|
411
428
|
* @throws {TypeError} Error if options.urlServer is not specified
|
|
@@ -420,6 +437,11 @@ var createSession = function (options) {
|
|
|
420
437
|
throw new TypeError("options.urlServer must be provided");
|
|
421
438
|
}
|
|
422
439
|
|
|
440
|
+
// Set session logger #WCS-2434
|
|
441
|
+
var sessionLogger = createLogger(options.logger)
|
|
442
|
+
// Override logger for all low level operations
|
|
443
|
+
var logger = sessionLogger;
|
|
444
|
+
|
|
423
445
|
var id_ = uuid_v1();
|
|
424
446
|
var sessionStatus = SESSION_STATUS.PENDING;
|
|
425
447
|
var urlServer = options.urlServer;
|
|
@@ -518,7 +540,7 @@ var createSession = function (options) {
|
|
|
518
540
|
if (timeout != undefined && timeout > 0) {
|
|
519
541
|
connectionTimeout = setTimeout(function() {
|
|
520
542
|
if (wsConnection.readyState == 0) {
|
|
521
|
-
|
|
543
|
+
logger.warn(LOG_PREFIX, "WS connection timeout");
|
|
522
544
|
wsConnection.close();
|
|
523
545
|
}
|
|
524
546
|
}, timeout);
|
|
@@ -539,7 +561,7 @@ var createSession = function (options) {
|
|
|
539
561
|
mediaProviders: Object.keys(MediaProvider),
|
|
540
562
|
keepAlive: keepAlive,
|
|
541
563
|
authToken:authToken,
|
|
542
|
-
clientVersion: "2.0.
|
|
564
|
+
clientVersion: "2.0.217",
|
|
543
565
|
clientOSVersion: window.navigator.appVersion,
|
|
544
566
|
clientBrowserVersion: window.navigator.userAgent,
|
|
545
567
|
msePacketizationVersion: 2,
|
|
@@ -796,6 +818,7 @@ var createSession = function (options) {
|
|
|
796
818
|
* @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
|
|
797
819
|
* @param {Array<string>=} options.sipHeaders Array of custom SIP headers
|
|
798
820
|
* @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
|
|
821
|
+
* @param {Object=} options.logger Call logger options
|
|
799
822
|
* @param {sdpHook} sdpHook The callback that handles sdp from the server
|
|
800
823
|
* @returns {Call} Call
|
|
801
824
|
* @throws {TypeError} Error if no options provided
|
|
@@ -806,14 +829,19 @@ var createSession = function (options) {
|
|
|
806
829
|
var createCall = function (options) {
|
|
807
830
|
//check session state
|
|
808
831
|
if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
|
|
809
|
-
|
|
810
|
-
throw new Error('Invalid session state');
|
|
832
|
+
throw new Error('Invalid session state ' + sessionStatus);
|
|
811
833
|
}
|
|
812
834
|
|
|
813
835
|
//check options
|
|
814
836
|
if (!options) {
|
|
815
837
|
throw new TypeError("options must be provided");
|
|
816
838
|
}
|
|
839
|
+
|
|
840
|
+
// Set call logger #WCS-2434
|
|
841
|
+
var callLogger = createLogger(options.logger, sessionLogger);
|
|
842
|
+
// Override logger for all low level operations
|
|
843
|
+
var logger = callLogger;
|
|
844
|
+
|
|
817
845
|
var login = (appKey == 'clickToCallApp') ? '' : cConfig.sipLogin;
|
|
818
846
|
var caller_ = (options.incoming) ? options.caller : login;
|
|
819
847
|
var callee_ = options.callee;
|
|
@@ -949,7 +977,8 @@ var createSession = function (options) {
|
|
|
949
977
|
constraints: constraints,
|
|
950
978
|
connectionConfig: mediaOptions,
|
|
951
979
|
audioOutputId: audioOutputId,
|
|
952
|
-
videoContentHint: videoContentHint
|
|
980
|
+
videoContentHint: videoContentHint,
|
|
981
|
+
logger: logger
|
|
953
982
|
}).then(function (newConnection) {
|
|
954
983
|
mediaConnection = newConnection;
|
|
955
984
|
return mediaConnection.createOffer({
|
|
@@ -1460,7 +1489,7 @@ var createSession = function (options) {
|
|
|
1460
1489
|
/**
|
|
1461
1490
|
* Get call info
|
|
1462
1491
|
* @returns {string} Info
|
|
1463
|
-
* @memberof
|
|
1492
|
+
* @memberof Call
|
|
1464
1493
|
* @inner
|
|
1465
1494
|
*/
|
|
1466
1495
|
var getInfo = function () {
|
|
@@ -1470,13 +1499,22 @@ var createSession = function (options) {
|
|
|
1470
1499
|
/**
|
|
1471
1500
|
* Get stream error info
|
|
1472
1501
|
* @returns {string} Error info
|
|
1473
|
-
* @memberof
|
|
1502
|
+
* @memberof Call
|
|
1474
1503
|
* @inner
|
|
1475
1504
|
*/
|
|
1476
1505
|
var getErrorInfo = function () {
|
|
1477
1506
|
return errorInfo_;
|
|
1478
1507
|
};
|
|
1479
1508
|
|
|
1509
|
+
/**
|
|
1510
|
+
* Get call logger
|
|
1511
|
+
*
|
|
1512
|
+
* @returns {Object} Logger
|
|
1513
|
+
* @memberof Call
|
|
1514
|
+
*/
|
|
1515
|
+
var getLogger = function () {
|
|
1516
|
+
return callLogger;
|
|
1517
|
+
};
|
|
1480
1518
|
|
|
1481
1519
|
call.call = call_;
|
|
1482
1520
|
call.answer = answer;
|
|
@@ -1508,6 +1546,7 @@ var createSession = function (options) {
|
|
|
1508
1546
|
call.switchMic = switchMic;
|
|
1509
1547
|
call.switchToScreen = switchToScreen;
|
|
1510
1548
|
call.switchToCam = switchToCam;
|
|
1549
|
+
call.getLogger = getLogger;
|
|
1511
1550
|
calls[id_] = call;
|
|
1512
1551
|
return call;
|
|
1513
1552
|
};
|
|
@@ -1555,6 +1594,7 @@ var createSession = function (options) {
|
|
|
1555
1594
|
* @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
|
|
1556
1595
|
* @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
|
|
1557
1596
|
* @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
|
|
1597
|
+
* @param {Object=} options.logger Stream logger options
|
|
1558
1598
|
* @param {sdpHook} sdpHook The callback that handles sdp from the server
|
|
1559
1599
|
* @returns {Stream} Stream
|
|
1560
1600
|
* @throws {TypeError} Error if no options provided
|
|
@@ -1569,7 +1609,7 @@ var createSession = function (options) {
|
|
|
1569
1609
|
var availableCallbacks = [];
|
|
1570
1610
|
//check session state
|
|
1571
1611
|
if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
|
|
1572
|
-
throw new Error('Invalid session state');
|
|
1612
|
+
throw new Error('Invalid session state ' + sessionStatus);
|
|
1573
1613
|
}
|
|
1574
1614
|
|
|
1575
1615
|
//check options
|
|
@@ -1580,6 +1620,11 @@ var createSession = function (options) {
|
|
|
1580
1620
|
throw new TypeError("options.name must be provided");
|
|
1581
1621
|
}
|
|
1582
1622
|
|
|
1623
|
+
// Set stream logger #WCS-2434
|
|
1624
|
+
var streamLogger = createLogger(options.logger, sessionLogger);
|
|
1625
|
+
// Override logger for all low level operations
|
|
1626
|
+
var logger = streamLogger;
|
|
1627
|
+
|
|
1583
1628
|
var clientKf = new KalmanFilter();
|
|
1584
1629
|
var serverKf = new KalmanFilter();
|
|
1585
1630
|
|
|
@@ -1816,7 +1861,7 @@ var createSession = function (options) {
|
|
|
1816
1861
|
var play = function () {
|
|
1817
1862
|
logger.debug(LOG_PREFIX, "Play stream " + name_);
|
|
1818
1863
|
if (status_ !== STREAM_STATUS.NEW) {
|
|
1819
|
-
throw new Error("Invalid stream state");
|
|
1864
|
+
throw new Error("Invalid stream state " + status_);
|
|
1820
1865
|
}
|
|
1821
1866
|
status_ = STREAM_STATUS.PENDING;
|
|
1822
1867
|
//create mediaProvider connection
|
|
@@ -1834,7 +1879,8 @@ var createSession = function (options) {
|
|
|
1834
1879
|
audioOutputId: audioOutputId,
|
|
1835
1880
|
remoteVideo: remoteVideo,
|
|
1836
1881
|
playoutDelay: playoutDelay,
|
|
1837
|
-
unmutePlayOnStart: unmutePlayOnStart
|
|
1882
|
+
unmutePlayOnStart: unmutePlayOnStart,
|
|
1883
|
+
logger: logger
|
|
1838
1884
|
}, streamRefreshHandlers[id_]).then(function (newConnection) {
|
|
1839
1885
|
mediaConnection = newConnection;
|
|
1840
1886
|
try {
|
|
@@ -1891,7 +1937,7 @@ var createSession = function (options) {
|
|
|
1891
1937
|
var publish = function () {
|
|
1892
1938
|
logger.debug(LOG_PREFIX, "Publish stream " + name_);
|
|
1893
1939
|
if (status_ !== STREAM_STATUS.NEW) {
|
|
1894
|
-
throw new Error("Invalid stream state");
|
|
1940
|
+
throw new Error("Invalid stream state " + status_);
|
|
1895
1941
|
}
|
|
1896
1942
|
status_ = STREAM_STATUS.PENDING;
|
|
1897
1943
|
published_ = true;
|
|
@@ -1922,7 +1968,8 @@ var createSession = function (options) {
|
|
|
1922
1968
|
connectionConfig: mediaOptions,
|
|
1923
1969
|
connectionConstraints: mediaConnectionConstraints,
|
|
1924
1970
|
customStream: constraints && constraints.customStream ? constraints.customStream : false,
|
|
1925
|
-
videoContentHint: videoContentHint
|
|
1971
|
+
videoContentHint: videoContentHint,
|
|
1972
|
+
logger: logger
|
|
1926
1973
|
}).then(function (newConnection) {
|
|
1927
1974
|
mediaConnection = newConnection;
|
|
1928
1975
|
return mediaConnection.createOffer({
|
|
@@ -2501,6 +2548,16 @@ var createSession = function (options) {
|
|
|
2501
2548
|
});
|
|
2502
2549
|
};
|
|
2503
2550
|
|
|
2551
|
+
/**
|
|
2552
|
+
* Get stream logger
|
|
2553
|
+
*
|
|
2554
|
+
* @returns {Object} Logger
|
|
2555
|
+
* @memberof Stream
|
|
2556
|
+
*/
|
|
2557
|
+
var getLogger = function () {
|
|
2558
|
+
return streamLogger;
|
|
2559
|
+
};
|
|
2560
|
+
|
|
2504
2561
|
stream.play = play;
|
|
2505
2562
|
stream.publish = publish;
|
|
2506
2563
|
stream.stop = stop;
|
|
@@ -2539,6 +2596,7 @@ var createSession = function (options) {
|
|
|
2539
2596
|
stream.switchToScreen = switchToScreen;
|
|
2540
2597
|
stream.switchToCam = switchToCam;
|
|
2541
2598
|
stream.sendData = sendData;
|
|
2599
|
+
stream.getLogger = getLogger;
|
|
2542
2600
|
|
|
2543
2601
|
streams[id_] = stream;
|
|
2544
2602
|
return stream;
|
|
@@ -2729,6 +2787,16 @@ var createSession = function (options) {
|
|
|
2729
2787
|
return sdp;
|
|
2730
2788
|
}
|
|
2731
2789
|
|
|
2790
|
+
/**
|
|
2791
|
+
* Get session logger
|
|
2792
|
+
*
|
|
2793
|
+
* @returns {Object} Logger
|
|
2794
|
+
* @memberof Session
|
|
2795
|
+
*/
|
|
2796
|
+
var getLogger = function () {
|
|
2797
|
+
return sessionLogger;
|
|
2798
|
+
};
|
|
2799
|
+
|
|
2732
2800
|
//export Session
|
|
2733
2801
|
session.id = id;
|
|
2734
2802
|
session.status = status;
|
|
@@ -2743,6 +2811,7 @@ var createSession = function (options) {
|
|
|
2743
2811
|
session.startDebug = startDebug;
|
|
2744
2812
|
session.stopDebug = stopDebug;
|
|
2745
2813
|
session.on = on;
|
|
2814
|
+
session.getLogger = getLogger;
|
|
2746
2815
|
|
|
2747
2816
|
//save interface to global map
|
|
2748
2817
|
sessions[id_] = session;
|
package/src/room-module.d.ts
CHANGED
|
@@ -13,10 +13,11 @@
|
|
|
13
13
|
* @memberof roomApi
|
|
14
14
|
* @method connect
|
|
15
15
|
*/
|
|
16
|
+
import Flashphoner = require("./flashphoner-core");
|
|
16
17
|
declare function appSession(options: {
|
|
17
18
|
urlServer: string;
|
|
18
19
|
username: string;
|
|
19
|
-
}):
|
|
20
|
+
}): Flashphoner.Session;
|
|
20
21
|
export namespace events {
|
|
21
22
|
const STATE: string;
|
|
22
23
|
const JOINED: string;
|
|
@@ -25,5 +26,4 @@ export namespace events {
|
|
|
25
26
|
const MESSAGE: string;
|
|
26
27
|
const FAILED: string;
|
|
27
28
|
}
|
|
28
|
-
import Flashphoner = require("@flashphoner/websdk/src/flashphoner-core");
|
|
29
29
|
export { appSession as connect, Flashphoner as sdk };
|
package/src/room-module.js
CHANGED
|
@@ -451,8 +451,15 @@ var appSession = function (options) {
|
|
|
451
451
|
|
|
452
452
|
//participant helpers
|
|
453
453
|
function play(streamName) {
|
|
454
|
-
|
|
455
|
-
|
|
454
|
+
// Pass stream options to play #WCS-3445
|
|
455
|
+
return function (display, options = {}) {
|
|
456
|
+
var streamOptions = {
|
|
457
|
+
...options,
|
|
458
|
+
name: streamName,
|
|
459
|
+
display: display,
|
|
460
|
+
custom: {name: name_}
|
|
461
|
+
};
|
|
462
|
+
var stream = session.createStream(streamOptions);
|
|
456
463
|
stream.play();
|
|
457
464
|
return stream;
|
|
458
465
|
}
|
|
@@ -13,6 +13,11 @@ var Promise = require('es6-promise').Promise;
|
|
|
13
13
|
|
|
14
14
|
var createConnection = function (options) {
|
|
15
15
|
return new Promise(function (resolve, reject) {
|
|
16
|
+
// Set connection logger #WCS-2434
|
|
17
|
+
if (options.logger) {
|
|
18
|
+
logger = options.logger;
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
var id = options.id;
|
|
17
22
|
var connectionConfig = options.connectionConfig || {"iceServers": []};
|
|
18
23
|
var connection = new RTCPeerConnection(connectionConfig, {
|