@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
package/docTemplate/README.md
CHANGED
package/flashphoner-no-flash.js
CHANGED
|
@@ -11885,6 +11885,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11885
11885
|
metricsBatch: null,
|
|
11886
11886
|
timer: null,
|
|
11887
11887
|
batchCount: 0,
|
|
11888
|
+
timerBusy: false,
|
|
11888
11889
|
start: function () {
|
|
11889
11890
|
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
11890
11891
|
var error;
|
|
@@ -11967,7 +11968,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11967
11968
|
_context2.n = 1;
|
|
11968
11969
|
break;
|
|
11969
11970
|
}
|
|
11970
|
-
statCollector.logger.error(LOG_PREFIX, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11971
|
+
statCollector.logger.error(LOG_PREFIX + "-" + statCollector.id, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11971
11972
|
return _context2.a(2);
|
|
11972
11973
|
case 1:
|
|
11973
11974
|
if (!(description.types || description.compression)) {
|
|
@@ -12027,14 +12028,26 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12027
12028
|
}(),
|
|
12028
12029
|
updateHeaders: function () {
|
|
12029
12030
|
var _updateHeaders = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
12030
|
-
var stats
|
|
12031
|
+
var stats,
|
|
12032
|
+
currentHeaders,
|
|
12033
|
+
headersChanged,
|
|
12034
|
+
newMetrics,
|
|
12035
|
+
_args3 = arguments;
|
|
12031
12036
|
return _regenerator().w(function (_context3) {
|
|
12032
12037
|
while (1) switch (_context3.n) {
|
|
12033
12038
|
case 0:
|
|
12039
|
+
stats = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
|
|
12040
|
+
currentHeaders = "";
|
|
12041
|
+
headersChanged = false;
|
|
12042
|
+
if (stats) {
|
|
12043
|
+
_context3.n = 2;
|
|
12044
|
+
break;
|
|
12045
|
+
}
|
|
12034
12046
|
_context3.n = 1;
|
|
12035
12047
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
12036
12048
|
case 1:
|
|
12037
12049
|
stats = _context3.v;
|
|
12050
|
+
case 2:
|
|
12038
12051
|
Object.keys(statCollector.description.types).forEach(function (type) {
|
|
12039
12052
|
var typeDescriptor = statCollector.description.types[type];
|
|
12040
12053
|
var metricsString = "";
|
|
@@ -12047,11 +12060,11 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12047
12060
|
}
|
|
12048
12061
|
if (stats[type]) {
|
|
12049
12062
|
stats[type].forEach(function (report) {
|
|
12050
|
-
statCollector.logger.debug(LOG_PREFIX, type + " report: " + JSON.stringify(report));
|
|
12063
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " report: " + JSON.stringify(report));
|
|
12051
12064
|
if (contentFilters) {
|
|
12052
12065
|
var filtersMatched = true;
|
|
12053
12066
|
for (var filter in contentFilters) {
|
|
12054
|
-
statCollector.logger.debug(LOG_PREFIX, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
12067
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
12055
12068
|
var filterMatched = false;
|
|
12056
12069
|
if (report[filter]) {
|
|
12057
12070
|
var _iterator = _createForOfIteratorHelper(contentFilters[filter]),
|
|
@@ -12059,7 +12072,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12059
12072
|
try {
|
|
12060
12073
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
12061
12074
|
var value = _step.value;
|
|
12062
|
-
statCollector.logger.debug(LOG_PREFIX, filter + ": " + value + " <> " + report[filter]);
|
|
12075
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, filter + ": " + value + " <> " + report[filter]);
|
|
12063
12076
|
if (report[filter] === value) {
|
|
12064
12077
|
filterMatched = true;
|
|
12065
12078
|
break;
|
|
@@ -12077,18 +12090,30 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12077
12090
|
}
|
|
12078
12091
|
}
|
|
12079
12092
|
if (filtersMatched) {
|
|
12080
|
-
statCollector.addHeaders(report, metricsString);
|
|
12093
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
12081
12094
|
}
|
|
12082
12095
|
} else {
|
|
12083
|
-
statCollector.addHeaders(report, metricsString);
|
|
12096
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
12084
12097
|
}
|
|
12085
12098
|
});
|
|
12086
12099
|
} else {
|
|
12087
|
-
statCollector.logger.
|
|
12100
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, "No report type found in RTC stats: '" + type + "'");
|
|
12088
12101
|
}
|
|
12089
12102
|
});
|
|
12090
|
-
|
|
12091
|
-
|
|
12103
|
+
if (currentHeaders !== statCollector.headers) {
|
|
12104
|
+
headersChanged = true;
|
|
12105
|
+
newMetrics = [];
|
|
12106
|
+
currentHeaders.split(",").forEach(function (header) {
|
|
12107
|
+
if (statCollector.headers.indexOf(header) === -1) {
|
|
12108
|
+
newMetrics.push(header);
|
|
12109
|
+
}
|
|
12110
|
+
});
|
|
12111
|
+
if (newMetrics.length) {
|
|
12112
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics to be collected: " + newMetrics.toString());
|
|
12113
|
+
}
|
|
12114
|
+
statCollector.headers = currentHeaders;
|
|
12115
|
+
}
|
|
12116
|
+
return _context3.a(2, headersChanged);
|
|
12092
12117
|
}
|
|
12093
12118
|
}, _callee3);
|
|
12094
12119
|
}));
|
|
@@ -12097,24 +12122,20 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12097
12122
|
}
|
|
12098
12123
|
return updateHeaders;
|
|
12099
12124
|
}(),
|
|
12100
|
-
addHeaders: function addHeaders(report, metricsString) {
|
|
12125
|
+
addHeaders: function addHeaders(currentHeaders, report, metricsString) {
|
|
12101
12126
|
if (metricsString) {
|
|
12102
12127
|
var metrics = metricsString.split(",");
|
|
12103
12128
|
metrics.forEach(function (metric) {
|
|
12104
|
-
var metricFound = false;
|
|
12105
12129
|
for (var _i = 0, _Object$keys = Object.keys(report); _i < _Object$keys.length; _i++) {
|
|
12106
12130
|
var key = _Object$keys[_i];
|
|
12107
12131
|
if (metric === key) {
|
|
12108
|
-
|
|
12109
|
-
metricFound = true;
|
|
12132
|
+
currentHeaders = util.addFieldToCsvString(currentHeaders, report.type + "." + report.id + "." + metric, ",");
|
|
12110
12133
|
break;
|
|
12111
12134
|
}
|
|
12112
12135
|
}
|
|
12113
|
-
if (!metricFound) {
|
|
12114
|
-
statCollector.logger.warn(LOG_PREFIX, "No metric found in RTC stats report '" + report.type + "': '" + metric + "'");
|
|
12115
|
-
}
|
|
12116
12136
|
});
|
|
12117
12137
|
}
|
|
12138
|
+
return currentHeaders;
|
|
12118
12139
|
},
|
|
12119
12140
|
updateCompression: function () {
|
|
12120
12141
|
var _updateCompression = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
@@ -12167,7 +12188,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12167
12188
|
case 2:
|
|
12168
12189
|
_context5.p = 2;
|
|
12169
12190
|
_t2 = _context5.v;
|
|
12170
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
12191
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
12171
12192
|
statCollector.compression = "none";
|
|
12172
12193
|
case 3:
|
|
12173
12194
|
return _context5.a(2);
|
|
@@ -12188,7 +12209,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12188
12209
|
statCollector.send("webRTCMetricsClientDescription", data);
|
|
12189
12210
|
},
|
|
12190
12211
|
send: function send(message, data) {
|
|
12191
|
-
statCollector.logger.debug(LOG_PREFIX, data);
|
|
12212
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, data);
|
|
12192
12213
|
if (statCollector.wsConnection.readyState === WebSocket.OPEN) {
|
|
12193
12214
|
statCollector.wsConnection.send(JSON.stringify({
|
|
12194
12215
|
message: message,
|
|
@@ -12211,22 +12232,24 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12211
12232
|
},
|
|
12212
12233
|
collectMetrics: function () {
|
|
12213
12234
|
var _collectMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {
|
|
12214
|
-
var stats, metrics;
|
|
12235
|
+
var stats, metrics, lostMetrics, headersUpdated;
|
|
12215
12236
|
return _regenerator().w(function (_context6) {
|
|
12216
12237
|
while (1) switch (_context6.n) {
|
|
12217
12238
|
case 0:
|
|
12218
|
-
if (!statCollector.timer) {
|
|
12219
|
-
_context6.n =
|
|
12239
|
+
if (!(statCollector.timer && !statCollector.timerBusy)) {
|
|
12240
|
+
_context6.n = 6;
|
|
12220
12241
|
break;
|
|
12221
12242
|
}
|
|
12243
|
+
// Unfortunately there are no real atomics in JS unless SharedArrayBuffer is used
|
|
12244
|
+
// So we guard the timer callback with a dumb boolean
|
|
12245
|
+
statCollector.timerBusy = true;
|
|
12222
12246
|
_context6.n = 1;
|
|
12223
12247
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
12224
12248
|
case 1:
|
|
12225
12249
|
stats = _context6.v;
|
|
12226
|
-
|
|
12227
|
-
statCollector.metricsBatch = [];
|
|
12228
|
-
}
|
|
12250
|
+
statCollector.startNewBatch();
|
|
12229
12251
|
metrics = [];
|
|
12252
|
+
lostMetrics = [];
|
|
12230
12253
|
statCollector.headers.split(",").forEach(function (header) {
|
|
12231
12254
|
var components = header.split(".");
|
|
12232
12255
|
var descriptor = {
|
|
@@ -12234,7 +12257,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12234
12257
|
id: components[1],
|
|
12235
12258
|
name: components[2]
|
|
12236
12259
|
};
|
|
12237
|
-
var value =
|
|
12260
|
+
var value = null;
|
|
12238
12261
|
if (stats[descriptor.type]) {
|
|
12239
12262
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
12240
12263
|
_step2;
|
|
@@ -12252,17 +12275,46 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12252
12275
|
_iterator2.f();
|
|
12253
12276
|
}
|
|
12254
12277
|
}
|
|
12255
|
-
|
|
12278
|
+
if (value === null) {
|
|
12279
|
+
lostMetrics.push(descriptor);
|
|
12280
|
+
} else {
|
|
12281
|
+
metrics.push(value);
|
|
12282
|
+
}
|
|
12256
12283
|
});
|
|
12284
|
+
// Metrics list may change if some metrics are added or some metrics are lost #WCS-4627
|
|
12285
|
+
_context6.n = 2;
|
|
12286
|
+
return statCollector.updateHeaders(stats);
|
|
12287
|
+
case 2:
|
|
12288
|
+
headersUpdated = _context6.v;
|
|
12289
|
+
if (!lostMetrics.length) {
|
|
12290
|
+
_context6.n = 4;
|
|
12291
|
+
break;
|
|
12292
|
+
}
|
|
12293
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
12294
|
+
// Send metrics already collected and start a new batch with current metrics array to send them later #WCS-4627
|
|
12295
|
+
_context6.n = 3;
|
|
12296
|
+
return statCollector.sendMetrics();
|
|
12297
|
+
case 3:
|
|
12298
|
+
statCollector.startNewBatch(metrics);
|
|
12299
|
+
_context6.n = 5;
|
|
12300
|
+
break;
|
|
12301
|
+
case 4:
|
|
12257
12302
|
statCollector.metricsBatch.push(metrics);
|
|
12258
12303
|
statCollector.batchCount--;
|
|
12259
|
-
if (!(statCollector.batchCount === 0)) {
|
|
12260
|
-
_context6.n =
|
|
12304
|
+
if (!(statCollector.batchCount === 0 || headersUpdated)) {
|
|
12305
|
+
_context6.n = 5;
|
|
12261
12306
|
break;
|
|
12262
12307
|
}
|
|
12263
|
-
_context6.n =
|
|
12308
|
+
_context6.n = 5;
|
|
12264
12309
|
return statCollector.sendMetrics();
|
|
12265
|
-
case
|
|
12310
|
+
case 5:
|
|
12311
|
+
// Check if metrics list changed and send a new headers if needed #WCS-4619
|
|
12312
|
+
if (headersUpdated) {
|
|
12313
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
12314
|
+
statCollector.sendHeaders();
|
|
12315
|
+
}
|
|
12316
|
+
statCollector.timerBusy = false;
|
|
12317
|
+
case 6:
|
|
12266
12318
|
return _context6.a(2);
|
|
12267
12319
|
}
|
|
12268
12320
|
}, _callee6);
|
|
@@ -12279,7 +12331,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12279
12331
|
while (1) switch (_context7.p = _context7.n) {
|
|
12280
12332
|
case 0:
|
|
12281
12333
|
metricsToSend = [];
|
|
12282
|
-
for (i = 0; i < statCollector.metricsBatch.length; i++) {
|
|
12334
|
+
for (i = 0; statCollector.metricsBatch && i < statCollector.metricsBatch.length; i++) {
|
|
12283
12335
|
metricsString = "";
|
|
12284
12336
|
for (j = 0; j < statCollector.metricsBatch[i].length; j++) {
|
|
12285
12337
|
valueString = valueToString(statCollector.metricsBatch[i][j]);
|
|
@@ -12313,7 +12365,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12313
12365
|
case 3:
|
|
12314
12366
|
_context7.p = 3;
|
|
12315
12367
|
_t3 = _context7.v;
|
|
12316
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12368
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12317
12369
|
metricsData = null;
|
|
12318
12370
|
case 4:
|
|
12319
12371
|
_context7.n = 6;
|
|
@@ -12328,8 +12380,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12328
12380
|
};
|
|
12329
12381
|
statCollector.send("webRTCMetricsBatch", data);
|
|
12330
12382
|
}
|
|
12331
|
-
statCollector.
|
|
12332
|
-
statCollector.batchCount = statCollector.description.batchSize;
|
|
12383
|
+
statCollector.cleanBatch();
|
|
12333
12384
|
case 7:
|
|
12334
12385
|
return _context7.a(2);
|
|
12335
12386
|
}
|
|
@@ -12339,7 +12390,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12339
12390
|
return _sendMetrics.apply(this, arguments);
|
|
12340
12391
|
}
|
|
12341
12392
|
return sendMetrics;
|
|
12342
|
-
}()
|
|
12393
|
+
}(),
|
|
12394
|
+
startNewBatch: function startNewBatch(metrics) {
|
|
12395
|
+
if (!statCollector.metricsBatch) {
|
|
12396
|
+
statCollector.metricsBatch = [];
|
|
12397
|
+
if (metrics) {
|
|
12398
|
+
statCollector.metricsBatch.push(metrics);
|
|
12399
|
+
}
|
|
12400
|
+
}
|
|
12401
|
+
},
|
|
12402
|
+
cleanBatch: function cleanBatch() {
|
|
12403
|
+
if (statCollector.metricsBatch) {
|
|
12404
|
+
statCollector.metricsBatch = null;
|
|
12405
|
+
statCollector.batchCount = statCollector.description.batchSize;
|
|
12406
|
+
}
|
|
12407
|
+
}
|
|
12343
12408
|
};
|
|
12344
12409
|
return statCollector;
|
|
12345
12410
|
};
|