@flashphoner/websdk 2.0.261 → 2.0.263
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 +80 -31
- package/flashphoner-no-flash.min.js +1 -1
- package/flashphoner-no-webrtc.js +80 -31
- package/flashphoner-no-webrtc.min.js +1 -1
- package/flashphoner-no-wsplayer.js +80 -31
- package/flashphoner-no-wsplayer.min.js +1 -1
- package/flashphoner-room-api-webrtc-only.js +80 -31
- package/flashphoner-room-api-webrtc-only.min.js +1 -1
- package/flashphoner-room-api.js +62 -27
- package/flashphoner-room-api.min.js +1 -1
- package/flashphoner-temasys-flash-websocket-without-adapterjs.js +80 -31
- package/flashphoner-temasys-flash-websocket.js +80 -31
- package/flashphoner-temasys-flash-websocket.min.js +1 -1
- package/flashphoner-webrtc-only.js +80 -31
- package/flashphoner-webrtc-only.min.js +1 -1
- package/flashphoner.js +80 -31
- package/flashphoner.min.js +1 -1
- package/package.json +1 -1
- package/src/stats-collector.js +58 -23
- package/src/util.js +4 -4
|
@@ -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,14 +11404,17 @@ 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;
|
|
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:
|
|
@@ -11399,6 +11423,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11399
11423
|
statCollector.metricsBatch = [];
|
|
11400
11424
|
}
|
|
11401
11425
|
metrics = [];
|
|
11426
|
+
lostMetrics = [];
|
|
11402
11427
|
statCollector.headers.split(",").forEach(function (header) {
|
|
11403
11428
|
var components = header.split(".");
|
|
11404
11429
|
var descriptor = {
|
|
@@ -11406,7 +11431,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11406
11431
|
id: components[1],
|
|
11407
11432
|
name: components[2]
|
|
11408
11433
|
};
|
|
11409
|
-
var value = "
|
|
11434
|
+
var value = "NO";
|
|
11410
11435
|
if (stats[descriptor.type]) {
|
|
11411
11436
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
11412
11437
|
_step2;
|
|
@@ -11425,7 +11450,13 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11425
11450
|
}
|
|
11426
11451
|
}
|
|
11427
11452
|
metrics.push(value);
|
|
11453
|
+
if (value == "NO") {
|
|
11454
|
+
lostMetrics.push(descriptor);
|
|
11455
|
+
}
|
|
11428
11456
|
});
|
|
11457
|
+
if (lostMetrics.length) {
|
|
11458
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
11459
|
+
}
|
|
11429
11460
|
statCollector.metricsBatch.push(metrics);
|
|
11430
11461
|
statCollector.batchCount--;
|
|
11431
11462
|
if (!(statCollector.batchCount === 0)) {
|
|
@@ -11435,6 +11466,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11435
11466
|
_context6.n = 2;
|
|
11436
11467
|
return statCollector.sendMetrics();
|
|
11437
11468
|
case 2:
|
|
11469
|
+
_context6.n = 3;
|
|
11470
|
+
return statCollector.updateHeaders(stats);
|
|
11471
|
+
case 3:
|
|
11472
|
+
if (!_context6.v) {
|
|
11473
|
+
_context6.n = 5;
|
|
11474
|
+
break;
|
|
11475
|
+
}
|
|
11476
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
11477
|
+
_context6.n = 4;
|
|
11478
|
+
return statCollector.sendMetrics();
|
|
11479
|
+
case 4:
|
|
11480
|
+
statCollector.sendHeaders();
|
|
11481
|
+
case 5:
|
|
11482
|
+
statCollector.timerBusy = false;
|
|
11483
|
+
case 6:
|
|
11438
11484
|
return _context6.a(2);
|
|
11439
11485
|
}
|
|
11440
11486
|
}, _callee6);
|
|
@@ -11446,7 +11492,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11446
11492
|
}(),
|
|
11447
11493
|
sendMetrics: function () {
|
|
11448
11494
|
var _sendMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
11449
|
-
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString,
|
|
11495
|
+
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString, delimiter, data, _t3;
|
|
11450
11496
|
return _regenerator().w(function (_context7) {
|
|
11451
11497
|
while (1) switch (_context7.p = _context7.n) {
|
|
11452
11498
|
case 0:
|
|
@@ -11456,14 +11502,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11456
11502
|
for (j = 0; j < statCollector.metricsBatch[i].length; j++) {
|
|
11457
11503
|
valueString = valueToString(statCollector.metricsBatch[i][j]);
|
|
11458
11504
|
previousString = "";
|
|
11459
|
-
|
|
11505
|
+
delimiter = ";";
|
|
11460
11506
|
if (previous) {
|
|
11461
11507
|
previousString = valueToString(previous[j]);
|
|
11462
11508
|
}
|
|
11463
11509
|
if (valueString === previousString) {
|
|
11464
11510
|
valueString = "";
|
|
11465
11511
|
}
|
|
11466
|
-
metricsString = util.addFieldToCsvString(metricsString, valueString,
|
|
11512
|
+
metricsString = util.addFieldToCsvString(metricsString, valueString, delimiter);
|
|
11513
|
+
if (j > 0 && metricsString === "") {
|
|
11514
|
+
metricsString = delimiter;
|
|
11515
|
+
}
|
|
11467
11516
|
}
|
|
11468
11517
|
previous = statCollector.metricsBatch[i];
|
|
11469
11518
|
metricsToSend.push(metricsString);
|
|
@@ -11482,7 +11531,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11482
11531
|
case 3:
|
|
11483
11532
|
_context7.p = 3;
|
|
11484
11533
|
_t3 = _context7.v;
|
|
11485
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
11534
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
11486
11535
|
metricsData = null;
|
|
11487
11536
|
case 4:
|
|
11488
11537
|
_context7.n = 6;
|
|
@@ -12034,14 +12083,14 @@ var setPublishingBitrate = function setPublishingBitrate(sdp, mediaConnection, m
|
|
|
12034
12083
|
}
|
|
12035
12084
|
return sdp;
|
|
12036
12085
|
};
|
|
12037
|
-
var addFieldToCsvString = function addFieldToCsvString(csvString, field,
|
|
12038
|
-
if (field !== "" && field.indexOf(
|
|
12086
|
+
var addFieldToCsvString = function addFieldToCsvString(csvString, field, delimiter) {
|
|
12087
|
+
if (field !== "" && field.indexOf(delimiter) >= 0) {
|
|
12039
12088
|
field = '"' + field + '"';
|
|
12040
12089
|
}
|
|
12041
|
-
if (csvString === ""
|
|
12090
|
+
if (csvString === "") {
|
|
12042
12091
|
csvString = field;
|
|
12043
12092
|
} else {
|
|
12044
|
-
csvString = csvString +
|
|
12093
|
+
csvString = csvString + delimiter + field;
|
|
12045
12094
|
}
|
|
12046
12095
|
return csvString;
|
|
12047
12096
|
};
|