@flashphoner/websdk 2.0.262 → 2.0.264
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/flashphoner-no-flash.js +101 -36
- package/flashphoner-no-flash.min.js +1 -1
- package/flashphoner-no-webrtc.js +101 -36
- package/flashphoner-no-webrtc.min.js +1 -1
- package/flashphoner-no-wsplayer.js +101 -36
- package/flashphoner-no-wsplayer.min.js +1 -1
- package/flashphoner-room-api-webrtc-only.js +101 -36
- package/flashphoner-room-api-webrtc-only.min.js +1 -1
- package/flashphoner-room-api.js +80 -31
- package/flashphoner-room-api.min.js +1 -1
- package/flashphoner-temasys-flash-websocket-without-adapterjs.js +101 -36
- package/flashphoner-temasys-flash-websocket.js +101 -36
- package/flashphoner-temasys-flash-websocket.min.js +1 -1
- package/flashphoner-webrtc-only.js +101 -36
- package/flashphoner-webrtc-only.min.js +1 -1
- package/flashphoner.js +101 -36
- package/flashphoner.min.js +1 -1
- package/package.json +1 -2
- package/src/stats-collector.js +80 -31
|
@@ -11057,6 +11057,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11057
11057
|
metricsBatch: null,
|
|
11058
11058
|
timer: null,
|
|
11059
11059
|
batchCount: 0,
|
|
11060
|
+
timerBusy: false,
|
|
11060
11061
|
start: function () {
|
|
11061
11062
|
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
11062
11063
|
var error;
|
|
@@ -11139,7 +11140,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11139
11140
|
_context2.n = 1;
|
|
11140
11141
|
break;
|
|
11141
11142
|
}
|
|
11142
|
-
statCollector.logger.error(LOG_PREFIX, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11143
|
+
statCollector.logger.error(LOG_PREFIX + "-" + statCollector.id, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11143
11144
|
return _context2.a(2);
|
|
11144
11145
|
case 1:
|
|
11145
11146
|
if (!(description.types || description.compression)) {
|
|
@@ -11199,14 +11200,26 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11199
11200
|
}(),
|
|
11200
11201
|
updateHeaders: function () {
|
|
11201
11202
|
var _updateHeaders = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
11202
|
-
var stats
|
|
11203
|
+
var stats,
|
|
11204
|
+
currentHeaders,
|
|
11205
|
+
headersChanged,
|
|
11206
|
+
newMetrics,
|
|
11207
|
+
_args3 = arguments;
|
|
11203
11208
|
return _regenerator().w(function (_context3) {
|
|
11204
11209
|
while (1) switch (_context3.n) {
|
|
11205
11210
|
case 0:
|
|
11211
|
+
stats = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
|
|
11212
|
+
currentHeaders = "";
|
|
11213
|
+
headersChanged = false;
|
|
11214
|
+
if (stats) {
|
|
11215
|
+
_context3.n = 2;
|
|
11216
|
+
break;
|
|
11217
|
+
}
|
|
11206
11218
|
_context3.n = 1;
|
|
11207
11219
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
11208
11220
|
case 1:
|
|
11209
11221
|
stats = _context3.v;
|
|
11222
|
+
case 2:
|
|
11210
11223
|
Object.keys(statCollector.description.types).forEach(function (type) {
|
|
11211
11224
|
var typeDescriptor = statCollector.description.types[type];
|
|
11212
11225
|
var metricsString = "";
|
|
@@ -11219,11 +11232,11 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11219
11232
|
}
|
|
11220
11233
|
if (stats[type]) {
|
|
11221
11234
|
stats[type].forEach(function (report) {
|
|
11222
|
-
statCollector.logger.debug(LOG_PREFIX, type + " report: " + JSON.stringify(report));
|
|
11235
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " report: " + JSON.stringify(report));
|
|
11223
11236
|
if (contentFilters) {
|
|
11224
11237
|
var filtersMatched = true;
|
|
11225
11238
|
for (var filter in contentFilters) {
|
|
11226
|
-
statCollector.logger.debug(LOG_PREFIX, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
11239
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
11227
11240
|
var filterMatched = false;
|
|
11228
11241
|
if (report[filter]) {
|
|
11229
11242
|
var _iterator = _createForOfIteratorHelper(contentFilters[filter]),
|
|
@@ -11231,7 +11244,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11231
11244
|
try {
|
|
11232
11245
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
11233
11246
|
var value = _step.value;
|
|
11234
|
-
statCollector.logger.debug(LOG_PREFIX, filter + ": " + value + " <> " + report[filter]);
|
|
11247
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, filter + ": " + value + " <> " + report[filter]);
|
|
11235
11248
|
if (report[filter] === value) {
|
|
11236
11249
|
filterMatched = true;
|
|
11237
11250
|
break;
|
|
@@ -11249,18 +11262,30 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11249
11262
|
}
|
|
11250
11263
|
}
|
|
11251
11264
|
if (filtersMatched) {
|
|
11252
|
-
statCollector.addHeaders(report, metricsString);
|
|
11265
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
11253
11266
|
}
|
|
11254
11267
|
} else {
|
|
11255
|
-
statCollector.addHeaders(report, metricsString);
|
|
11268
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
11256
11269
|
}
|
|
11257
11270
|
});
|
|
11258
11271
|
} else {
|
|
11259
|
-
statCollector.logger.
|
|
11272
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, "No report type found in RTC stats: '" + type + "'");
|
|
11260
11273
|
}
|
|
11261
11274
|
});
|
|
11262
|
-
|
|
11263
|
-
|
|
11275
|
+
if (currentHeaders !== statCollector.headers) {
|
|
11276
|
+
headersChanged = true;
|
|
11277
|
+
newMetrics = [];
|
|
11278
|
+
currentHeaders.split(",").forEach(function (header) {
|
|
11279
|
+
if (statCollector.headers.indexOf(header) === -1) {
|
|
11280
|
+
newMetrics.push(header);
|
|
11281
|
+
}
|
|
11282
|
+
});
|
|
11283
|
+
if (newMetrics.length) {
|
|
11284
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics to be collected: " + newMetrics.toString());
|
|
11285
|
+
}
|
|
11286
|
+
statCollector.headers = currentHeaders;
|
|
11287
|
+
}
|
|
11288
|
+
return _context3.a(2, headersChanged);
|
|
11264
11289
|
}
|
|
11265
11290
|
}, _callee3);
|
|
11266
11291
|
}));
|
|
@@ -11269,24 +11294,20 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11269
11294
|
}
|
|
11270
11295
|
return updateHeaders;
|
|
11271
11296
|
}(),
|
|
11272
|
-
addHeaders: function addHeaders(report, metricsString) {
|
|
11297
|
+
addHeaders: function addHeaders(currentHeaders, report, metricsString) {
|
|
11273
11298
|
if (metricsString) {
|
|
11274
11299
|
var metrics = metricsString.split(",");
|
|
11275
11300
|
metrics.forEach(function (metric) {
|
|
11276
|
-
var metricFound = false;
|
|
11277
11301
|
for (var _i = 0, _Object$keys = Object.keys(report); _i < _Object$keys.length; _i++) {
|
|
11278
11302
|
var key = _Object$keys[_i];
|
|
11279
11303
|
if (metric === key) {
|
|
11280
|
-
|
|
11281
|
-
metricFound = true;
|
|
11304
|
+
currentHeaders = util.addFieldToCsvString(currentHeaders, report.type + "." + report.id + "." + metric, ",");
|
|
11282
11305
|
break;
|
|
11283
11306
|
}
|
|
11284
11307
|
}
|
|
11285
|
-
if (!metricFound) {
|
|
11286
|
-
statCollector.logger.warn(LOG_PREFIX, "No metric found in RTC stats report '" + report.type + "': '" + metric + "'");
|
|
11287
|
-
}
|
|
11288
11308
|
});
|
|
11289
11309
|
}
|
|
11310
|
+
return currentHeaders;
|
|
11290
11311
|
},
|
|
11291
11312
|
updateCompression: function () {
|
|
11292
11313
|
var _updateCompression = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
@@ -11339,7 +11360,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11339
11360
|
case 2:
|
|
11340
11361
|
_context5.p = 2;
|
|
11341
11362
|
_t2 = _context5.v;
|
|
11342
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
11363
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
11343
11364
|
statCollector.compression = "none";
|
|
11344
11365
|
case 3:
|
|
11345
11366
|
return _context5.a(2);
|
|
@@ -11360,7 +11381,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11360
11381
|
statCollector.send("webRTCMetricsClientDescription", data);
|
|
11361
11382
|
},
|
|
11362
11383
|
send: function send(message, data) {
|
|
11363
|
-
statCollector.logger.debug(LOG_PREFIX, data);
|
|
11384
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, data);
|
|
11364
11385
|
if (statCollector.wsConnection.readyState === WebSocket.OPEN) {
|
|
11365
11386
|
statCollector.wsConnection.send(JSON.stringify({
|
|
11366
11387
|
message: message,
|
|
@@ -11383,22 +11404,24 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11383
11404
|
},
|
|
11384
11405
|
collectMetrics: function () {
|
|
11385
11406
|
var _collectMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {
|
|
11386
|
-
var stats, metrics;
|
|
11407
|
+
var stats, metrics, lostMetrics, headersUpdated;
|
|
11387
11408
|
return _regenerator().w(function (_context6) {
|
|
11388
11409
|
while (1) switch (_context6.n) {
|
|
11389
11410
|
case 0:
|
|
11390
|
-
if (!statCollector.timer) {
|
|
11391
|
-
_context6.n =
|
|
11411
|
+
if (!(statCollector.timer && !statCollector.timerBusy)) {
|
|
11412
|
+
_context6.n = 6;
|
|
11392
11413
|
break;
|
|
11393
11414
|
}
|
|
11415
|
+
// Unfortunately there are no real atomics in JS unless SharedArrayBuffer is used
|
|
11416
|
+
// So we guard the timer callback with a dumb boolean
|
|
11417
|
+
statCollector.timerBusy = true;
|
|
11394
11418
|
_context6.n = 1;
|
|
11395
11419
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
11396
11420
|
case 1:
|
|
11397
11421
|
stats = _context6.v;
|
|
11398
|
-
|
|
11399
|
-
statCollector.metricsBatch = [];
|
|
11400
|
-
}
|
|
11422
|
+
statCollector.startNewBatch();
|
|
11401
11423
|
metrics = [];
|
|
11424
|
+
lostMetrics = [];
|
|
11402
11425
|
statCollector.headers.split(",").forEach(function (header) {
|
|
11403
11426
|
var components = header.split(".");
|
|
11404
11427
|
var descriptor = {
|
|
@@ -11406,7 +11429,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11406
11429
|
id: components[1],
|
|
11407
11430
|
name: components[2]
|
|
11408
11431
|
};
|
|
11409
|
-
var value =
|
|
11432
|
+
var value = null;
|
|
11410
11433
|
if (stats[descriptor.type]) {
|
|
11411
11434
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
11412
11435
|
_step2;
|
|
@@ -11424,17 +11447,46 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11424
11447
|
_iterator2.f();
|
|
11425
11448
|
}
|
|
11426
11449
|
}
|
|
11427
|
-
|
|
11450
|
+
if (value === null) {
|
|
11451
|
+
lostMetrics.push(descriptor);
|
|
11452
|
+
} else {
|
|
11453
|
+
metrics.push(value);
|
|
11454
|
+
}
|
|
11428
11455
|
});
|
|
11456
|
+
// Metrics list may change if some metrics are added or some metrics are lost #WCS-4627
|
|
11457
|
+
_context6.n = 2;
|
|
11458
|
+
return statCollector.updateHeaders(stats);
|
|
11459
|
+
case 2:
|
|
11460
|
+
headersUpdated = _context6.v;
|
|
11461
|
+
if (!lostMetrics.length) {
|
|
11462
|
+
_context6.n = 4;
|
|
11463
|
+
break;
|
|
11464
|
+
}
|
|
11465
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
11466
|
+
// Send metrics already collected and start a new batch with current metrics array to send them later #WCS-4627
|
|
11467
|
+
_context6.n = 3;
|
|
11468
|
+
return statCollector.sendMetrics();
|
|
11469
|
+
case 3:
|
|
11470
|
+
statCollector.startNewBatch(metrics);
|
|
11471
|
+
_context6.n = 5;
|
|
11472
|
+
break;
|
|
11473
|
+
case 4:
|
|
11429
11474
|
statCollector.metricsBatch.push(metrics);
|
|
11430
11475
|
statCollector.batchCount--;
|
|
11431
|
-
if (!(statCollector.batchCount === 0)) {
|
|
11432
|
-
_context6.n =
|
|
11476
|
+
if (!(statCollector.batchCount === 0 || headersUpdated)) {
|
|
11477
|
+
_context6.n = 5;
|
|
11433
11478
|
break;
|
|
11434
11479
|
}
|
|
11435
|
-
_context6.n =
|
|
11480
|
+
_context6.n = 5;
|
|
11436
11481
|
return statCollector.sendMetrics();
|
|
11437
|
-
case
|
|
11482
|
+
case 5:
|
|
11483
|
+
// Check if metrics list changed and send a new headers if needed #WCS-4619
|
|
11484
|
+
if (headersUpdated) {
|
|
11485
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
11486
|
+
statCollector.sendHeaders();
|
|
11487
|
+
}
|
|
11488
|
+
statCollector.timerBusy = false;
|
|
11489
|
+
case 6:
|
|
11438
11490
|
return _context6.a(2);
|
|
11439
11491
|
}
|
|
11440
11492
|
}, _callee6);
|
|
@@ -11451,7 +11503,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11451
11503
|
while (1) switch (_context7.p = _context7.n) {
|
|
11452
11504
|
case 0:
|
|
11453
11505
|
metricsToSend = [];
|
|
11454
|
-
for (i = 0; i < statCollector.metricsBatch.length; i++) {
|
|
11506
|
+
for (i = 0; statCollector.metricsBatch && i < statCollector.metricsBatch.length; i++) {
|
|
11455
11507
|
metricsString = "";
|
|
11456
11508
|
for (j = 0; j < statCollector.metricsBatch[i].length; j++) {
|
|
11457
11509
|
valueString = valueToString(statCollector.metricsBatch[i][j]);
|
|
@@ -11485,7 +11537,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11485
11537
|
case 3:
|
|
11486
11538
|
_context7.p = 3;
|
|
11487
11539
|
_t3 = _context7.v;
|
|
11488
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
11540
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
11489
11541
|
metricsData = null;
|
|
11490
11542
|
case 4:
|
|
11491
11543
|
_context7.n = 6;
|
|
@@ -11500,8 +11552,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11500
11552
|
};
|
|
11501
11553
|
statCollector.send("webRTCMetricsBatch", data);
|
|
11502
11554
|
}
|
|
11503
|
-
statCollector.
|
|
11504
|
-
statCollector.batchCount = statCollector.description.batchSize;
|
|
11555
|
+
statCollector.cleanBatch();
|
|
11505
11556
|
case 7:
|
|
11506
11557
|
return _context7.a(2);
|
|
11507
11558
|
}
|
|
@@ -11511,7 +11562,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11511
11562
|
return _sendMetrics.apply(this, arguments);
|
|
11512
11563
|
}
|
|
11513
11564
|
return sendMetrics;
|
|
11514
|
-
}()
|
|
11565
|
+
}(),
|
|
11566
|
+
startNewBatch: function startNewBatch(metrics) {
|
|
11567
|
+
if (!statCollector.metricsBatch) {
|
|
11568
|
+
statCollector.metricsBatch = [];
|
|
11569
|
+
if (metrics) {
|
|
11570
|
+
statCollector.metricsBatch.push(metrics);
|
|
11571
|
+
}
|
|
11572
|
+
}
|
|
11573
|
+
},
|
|
11574
|
+
cleanBatch: function cleanBatch() {
|
|
11575
|
+
if (statCollector.metricsBatch) {
|
|
11576
|
+
statCollector.metricsBatch = null;
|
|
11577
|
+
statCollector.batchCount = statCollector.description.batchSize;
|
|
11578
|
+
}
|
|
11579
|
+
}
|
|
11515
11580
|
};
|
|
11516
11581
|
return statCollector;
|
|
11517
11582
|
};
|