@flashphoner/websdk 2.0.262 → 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 +70 -24
- package/flashphoner-no-flash.min.js +1 -1
- package/flashphoner-no-webrtc.js +70 -24
- package/flashphoner-no-webrtc.min.js +1 -1
- package/flashphoner-no-wsplayer.js +70 -24
- package/flashphoner-no-wsplayer.min.js +1 -1
- package/flashphoner-room-api-webrtc-only.js +70 -24
- package/flashphoner-room-api-webrtc-only.min.js +1 -1
- package/flashphoner-room-api.js +53 -21
- package/flashphoner-room-api.min.js +1 -1
- package/flashphoner-temasys-flash-websocket-without-adapterjs.js +70 -24
- package/flashphoner-temasys-flash-websocket.js +70 -24
- package/flashphoner-temasys-flash-websocket.min.js +1 -1
- package/flashphoner-webrtc-only.js +70 -24
- package/flashphoner-webrtc-only.min.js +1 -1
- package/flashphoner.js +70 -24
- package/flashphoner.min.js +1 -1
- package/package.json +1 -1
- package/src/stats-collector.js +53 -21
|
@@ -12946,6 +12946,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12946
12946
|
metricsBatch: null,
|
|
12947
12947
|
timer: null,
|
|
12948
12948
|
batchCount: 0,
|
|
12949
|
+
timerBusy: false,
|
|
12949
12950
|
start: function () {
|
|
12950
12951
|
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
12951
12952
|
var error;
|
|
@@ -13028,7 +13029,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13028
13029
|
_context2.n = 1;
|
|
13029
13030
|
break;
|
|
13030
13031
|
}
|
|
13031
|
-
statCollector.logger.error(LOG_PREFIX, "Can't update WebRTC metrics sending: no parameters passed");
|
|
13032
|
+
statCollector.logger.error(LOG_PREFIX + "-" + statCollector.id, "Can't update WebRTC metrics sending: no parameters passed");
|
|
13032
13033
|
return _context2.a(2);
|
|
13033
13034
|
case 1:
|
|
13034
13035
|
if (!(description.types || description.compression)) {
|
|
@@ -13088,14 +13089,26 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13088
13089
|
}(),
|
|
13089
13090
|
updateHeaders: function () {
|
|
13090
13091
|
var _updateHeaders = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
13091
|
-
var stats
|
|
13092
|
+
var stats,
|
|
13093
|
+
currentHeaders,
|
|
13094
|
+
headersChanged,
|
|
13095
|
+
newMetrics,
|
|
13096
|
+
_args3 = arguments;
|
|
13092
13097
|
return _regenerator().w(function (_context3) {
|
|
13093
13098
|
while (1) switch (_context3.n) {
|
|
13094
13099
|
case 0:
|
|
13100
|
+
stats = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
|
|
13101
|
+
currentHeaders = "";
|
|
13102
|
+
headersChanged = false;
|
|
13103
|
+
if (stats) {
|
|
13104
|
+
_context3.n = 2;
|
|
13105
|
+
break;
|
|
13106
|
+
}
|
|
13095
13107
|
_context3.n = 1;
|
|
13096
13108
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
13097
13109
|
case 1:
|
|
13098
13110
|
stats = _context3.v;
|
|
13111
|
+
case 2:
|
|
13099
13112
|
Object.keys(statCollector.description.types).forEach(function (type) {
|
|
13100
13113
|
var typeDescriptor = statCollector.description.types[type];
|
|
13101
13114
|
var metricsString = "";
|
|
@@ -13108,11 +13121,11 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13108
13121
|
}
|
|
13109
13122
|
if (stats[type]) {
|
|
13110
13123
|
stats[type].forEach(function (report) {
|
|
13111
|
-
statCollector.logger.debug(LOG_PREFIX, type + " report: " + JSON.stringify(report));
|
|
13124
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " report: " + JSON.stringify(report));
|
|
13112
13125
|
if (contentFilters) {
|
|
13113
13126
|
var filtersMatched = true;
|
|
13114
13127
|
for (var filter in contentFilters) {
|
|
13115
|
-
statCollector.logger.debug(LOG_PREFIX, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
13128
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
13116
13129
|
var filterMatched = false;
|
|
13117
13130
|
if (report[filter]) {
|
|
13118
13131
|
var _iterator = _createForOfIteratorHelper(contentFilters[filter]),
|
|
@@ -13120,7 +13133,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13120
13133
|
try {
|
|
13121
13134
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
13122
13135
|
var value = _step.value;
|
|
13123
|
-
statCollector.logger.debug(LOG_PREFIX, filter + ": " + value + " <> " + report[filter]);
|
|
13136
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, filter + ": " + value + " <> " + report[filter]);
|
|
13124
13137
|
if (report[filter] === value) {
|
|
13125
13138
|
filterMatched = true;
|
|
13126
13139
|
break;
|
|
@@ -13138,18 +13151,30 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13138
13151
|
}
|
|
13139
13152
|
}
|
|
13140
13153
|
if (filtersMatched) {
|
|
13141
|
-
statCollector.addHeaders(report, metricsString);
|
|
13154
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
13142
13155
|
}
|
|
13143
13156
|
} else {
|
|
13144
|
-
statCollector.addHeaders(report, metricsString);
|
|
13157
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
13145
13158
|
}
|
|
13146
13159
|
});
|
|
13147
13160
|
} else {
|
|
13148
|
-
statCollector.logger.
|
|
13161
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, "No report type found in RTC stats: '" + type + "'");
|
|
13149
13162
|
}
|
|
13150
13163
|
});
|
|
13151
|
-
|
|
13152
|
-
|
|
13164
|
+
if (currentHeaders !== statCollector.headers) {
|
|
13165
|
+
headersChanged = true;
|
|
13166
|
+
newMetrics = [];
|
|
13167
|
+
currentHeaders.split(",").forEach(function (header) {
|
|
13168
|
+
if (statCollector.headers.indexOf(header) === -1) {
|
|
13169
|
+
newMetrics.push(header);
|
|
13170
|
+
}
|
|
13171
|
+
});
|
|
13172
|
+
if (newMetrics.length) {
|
|
13173
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics to be collected: " + newMetrics.toString());
|
|
13174
|
+
}
|
|
13175
|
+
statCollector.headers = currentHeaders;
|
|
13176
|
+
}
|
|
13177
|
+
return _context3.a(2, headersChanged);
|
|
13153
13178
|
}
|
|
13154
13179
|
}, _callee3);
|
|
13155
13180
|
}));
|
|
@@ -13158,24 +13183,20 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13158
13183
|
}
|
|
13159
13184
|
return updateHeaders;
|
|
13160
13185
|
}(),
|
|
13161
|
-
addHeaders: function addHeaders(report, metricsString) {
|
|
13186
|
+
addHeaders: function addHeaders(currentHeaders, report, metricsString) {
|
|
13162
13187
|
if (metricsString) {
|
|
13163
13188
|
var metrics = metricsString.split(",");
|
|
13164
13189
|
metrics.forEach(function (metric) {
|
|
13165
|
-
var metricFound = false;
|
|
13166
13190
|
for (var _i = 0, _Object$keys = Object.keys(report); _i < _Object$keys.length; _i++) {
|
|
13167
13191
|
var key = _Object$keys[_i];
|
|
13168
13192
|
if (metric === key) {
|
|
13169
|
-
|
|
13170
|
-
metricFound = true;
|
|
13193
|
+
currentHeaders = util.addFieldToCsvString(currentHeaders, report.type + "." + report.id + "." + metric, ",");
|
|
13171
13194
|
break;
|
|
13172
13195
|
}
|
|
13173
13196
|
}
|
|
13174
|
-
if (!metricFound) {
|
|
13175
|
-
statCollector.logger.warn(LOG_PREFIX, "No metric found in RTC stats report '" + report.type + "': '" + metric + "'");
|
|
13176
|
-
}
|
|
13177
13197
|
});
|
|
13178
13198
|
}
|
|
13199
|
+
return currentHeaders;
|
|
13179
13200
|
},
|
|
13180
13201
|
updateCompression: function () {
|
|
13181
13202
|
var _updateCompression = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
@@ -13228,7 +13249,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13228
13249
|
case 2:
|
|
13229
13250
|
_context5.p = 2;
|
|
13230
13251
|
_t2 = _context5.v;
|
|
13231
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
13252
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
13232
13253
|
statCollector.compression = "none";
|
|
13233
13254
|
case 3:
|
|
13234
13255
|
return _context5.a(2);
|
|
@@ -13249,7 +13270,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13249
13270
|
statCollector.send("webRTCMetricsClientDescription", data);
|
|
13250
13271
|
},
|
|
13251
13272
|
send: function send(message, data) {
|
|
13252
|
-
statCollector.logger.debug(LOG_PREFIX, data);
|
|
13273
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, data);
|
|
13253
13274
|
if (statCollector.wsConnection.readyState === WebSocket.OPEN) {
|
|
13254
13275
|
statCollector.wsConnection.send(JSON.stringify({
|
|
13255
13276
|
message: message,
|
|
@@ -13272,14 +13293,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13272
13293
|
},
|
|
13273
13294
|
collectMetrics: function () {
|
|
13274
13295
|
var _collectMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {
|
|
13275
|
-
var stats, metrics;
|
|
13296
|
+
var stats, metrics, lostMetrics;
|
|
13276
13297
|
return _regenerator().w(function (_context6) {
|
|
13277
13298
|
while (1) switch (_context6.n) {
|
|
13278
13299
|
case 0:
|
|
13279
|
-
if (!statCollector.timer) {
|
|
13280
|
-
_context6.n =
|
|
13300
|
+
if (!(statCollector.timer && !statCollector.timerBusy)) {
|
|
13301
|
+
_context6.n = 6;
|
|
13281
13302
|
break;
|
|
13282
13303
|
}
|
|
13304
|
+
// Unfortunately there are no real atomics in JS unless SharedArrayBuffer is used
|
|
13305
|
+
// So we guard the timer callback with a dumb boolean
|
|
13306
|
+
statCollector.timerBusy = true;
|
|
13283
13307
|
_context6.n = 1;
|
|
13284
13308
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
13285
13309
|
case 1:
|
|
@@ -13288,6 +13312,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13288
13312
|
statCollector.metricsBatch = [];
|
|
13289
13313
|
}
|
|
13290
13314
|
metrics = [];
|
|
13315
|
+
lostMetrics = [];
|
|
13291
13316
|
statCollector.headers.split(",").forEach(function (header) {
|
|
13292
13317
|
var components = header.split(".");
|
|
13293
13318
|
var descriptor = {
|
|
@@ -13295,7 +13320,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13295
13320
|
id: components[1],
|
|
13296
13321
|
name: components[2]
|
|
13297
13322
|
};
|
|
13298
|
-
var value = "
|
|
13323
|
+
var value = "NO";
|
|
13299
13324
|
if (stats[descriptor.type]) {
|
|
13300
13325
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
13301
13326
|
_step2;
|
|
@@ -13314,7 +13339,13 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13314
13339
|
}
|
|
13315
13340
|
}
|
|
13316
13341
|
metrics.push(value);
|
|
13342
|
+
if (value == "NO") {
|
|
13343
|
+
lostMetrics.push(descriptor);
|
|
13344
|
+
}
|
|
13317
13345
|
});
|
|
13346
|
+
if (lostMetrics.length) {
|
|
13347
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
13348
|
+
}
|
|
13318
13349
|
statCollector.metricsBatch.push(metrics);
|
|
13319
13350
|
statCollector.batchCount--;
|
|
13320
13351
|
if (!(statCollector.batchCount === 0)) {
|
|
@@ -13324,6 +13355,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13324
13355
|
_context6.n = 2;
|
|
13325
13356
|
return statCollector.sendMetrics();
|
|
13326
13357
|
case 2:
|
|
13358
|
+
_context6.n = 3;
|
|
13359
|
+
return statCollector.updateHeaders(stats);
|
|
13360
|
+
case 3:
|
|
13361
|
+
if (!_context6.v) {
|
|
13362
|
+
_context6.n = 5;
|
|
13363
|
+
break;
|
|
13364
|
+
}
|
|
13365
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
13366
|
+
_context6.n = 4;
|
|
13367
|
+
return statCollector.sendMetrics();
|
|
13368
|
+
case 4:
|
|
13369
|
+
statCollector.sendHeaders();
|
|
13370
|
+
case 5:
|
|
13371
|
+
statCollector.timerBusy = false;
|
|
13372
|
+
case 6:
|
|
13327
13373
|
return _context6.a(2);
|
|
13328
13374
|
}
|
|
13329
13375
|
}, _callee6);
|
|
@@ -13374,7 +13420,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
13374
13420
|
case 3:
|
|
13375
13421
|
_context7.p = 3;
|
|
13376
13422
|
_t3 = _context7.v;
|
|
13377
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
13423
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
13378
13424
|
metricsData = null;
|
|
13379
13425
|
case 4:
|
|
13380
13426
|
_context7.n = 6;
|
|
@@ -19701,6 +19701,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19701
19701
|
metricsBatch: null,
|
|
19702
19702
|
timer: null,
|
|
19703
19703
|
batchCount: 0,
|
|
19704
|
+
timerBusy: false,
|
|
19704
19705
|
start: function () {
|
|
19705
19706
|
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
19706
19707
|
var error;
|
|
@@ -19783,7 +19784,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19783
19784
|
_context2.n = 1;
|
|
19784
19785
|
break;
|
|
19785
19786
|
}
|
|
19786
|
-
statCollector.logger.error(LOG_PREFIX, "Can't update WebRTC metrics sending: no parameters passed");
|
|
19787
|
+
statCollector.logger.error(LOG_PREFIX + "-" + statCollector.id, "Can't update WebRTC metrics sending: no parameters passed");
|
|
19787
19788
|
return _context2.a(2);
|
|
19788
19789
|
case 1:
|
|
19789
19790
|
if (!(description.types || description.compression)) {
|
|
@@ -19843,14 +19844,26 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19843
19844
|
}(),
|
|
19844
19845
|
updateHeaders: function () {
|
|
19845
19846
|
var _updateHeaders = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
19846
|
-
var stats
|
|
19847
|
+
var stats,
|
|
19848
|
+
currentHeaders,
|
|
19849
|
+
headersChanged,
|
|
19850
|
+
newMetrics,
|
|
19851
|
+
_args3 = arguments;
|
|
19847
19852
|
return _regenerator().w(function (_context3) {
|
|
19848
19853
|
while (1) switch (_context3.n) {
|
|
19849
19854
|
case 0:
|
|
19855
|
+
stats = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
|
|
19856
|
+
currentHeaders = "";
|
|
19857
|
+
headersChanged = false;
|
|
19858
|
+
if (stats) {
|
|
19859
|
+
_context3.n = 2;
|
|
19860
|
+
break;
|
|
19861
|
+
}
|
|
19850
19862
|
_context3.n = 1;
|
|
19851
19863
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
19852
19864
|
case 1:
|
|
19853
19865
|
stats = _context3.v;
|
|
19866
|
+
case 2:
|
|
19854
19867
|
Object.keys(statCollector.description.types).forEach(function (type) {
|
|
19855
19868
|
var typeDescriptor = statCollector.description.types[type];
|
|
19856
19869
|
var metricsString = "";
|
|
@@ -19863,11 +19876,11 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19863
19876
|
}
|
|
19864
19877
|
if (stats[type]) {
|
|
19865
19878
|
stats[type].forEach(function (report) {
|
|
19866
|
-
statCollector.logger.debug(LOG_PREFIX, type + " report: " + JSON.stringify(report));
|
|
19879
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " report: " + JSON.stringify(report));
|
|
19867
19880
|
if (contentFilters) {
|
|
19868
19881
|
var filtersMatched = true;
|
|
19869
19882
|
for (var filter in contentFilters) {
|
|
19870
|
-
statCollector.logger.debug(LOG_PREFIX, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
19883
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
19871
19884
|
var filterMatched = false;
|
|
19872
19885
|
if (report[filter]) {
|
|
19873
19886
|
var _iterator = _createForOfIteratorHelper(contentFilters[filter]),
|
|
@@ -19875,7 +19888,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19875
19888
|
try {
|
|
19876
19889
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
19877
19890
|
var value = _step.value;
|
|
19878
|
-
statCollector.logger.debug(LOG_PREFIX, filter + ": " + value + " <> " + report[filter]);
|
|
19891
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, filter + ": " + value + " <> " + report[filter]);
|
|
19879
19892
|
if (report[filter] === value) {
|
|
19880
19893
|
filterMatched = true;
|
|
19881
19894
|
break;
|
|
@@ -19893,18 +19906,30 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19893
19906
|
}
|
|
19894
19907
|
}
|
|
19895
19908
|
if (filtersMatched) {
|
|
19896
|
-
statCollector.addHeaders(report, metricsString);
|
|
19909
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
19897
19910
|
}
|
|
19898
19911
|
} else {
|
|
19899
|
-
statCollector.addHeaders(report, metricsString);
|
|
19912
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
19900
19913
|
}
|
|
19901
19914
|
});
|
|
19902
19915
|
} else {
|
|
19903
|
-
statCollector.logger.
|
|
19916
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, "No report type found in RTC stats: '" + type + "'");
|
|
19904
19917
|
}
|
|
19905
19918
|
});
|
|
19906
|
-
|
|
19907
|
-
|
|
19919
|
+
if (currentHeaders !== statCollector.headers) {
|
|
19920
|
+
headersChanged = true;
|
|
19921
|
+
newMetrics = [];
|
|
19922
|
+
currentHeaders.split(",").forEach(function (header) {
|
|
19923
|
+
if (statCollector.headers.indexOf(header) === -1) {
|
|
19924
|
+
newMetrics.push(header);
|
|
19925
|
+
}
|
|
19926
|
+
});
|
|
19927
|
+
if (newMetrics.length) {
|
|
19928
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics to be collected: " + newMetrics.toString());
|
|
19929
|
+
}
|
|
19930
|
+
statCollector.headers = currentHeaders;
|
|
19931
|
+
}
|
|
19932
|
+
return _context3.a(2, headersChanged);
|
|
19908
19933
|
}
|
|
19909
19934
|
}, _callee3);
|
|
19910
19935
|
}));
|
|
@@ -19913,24 +19938,20 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19913
19938
|
}
|
|
19914
19939
|
return updateHeaders;
|
|
19915
19940
|
}(),
|
|
19916
|
-
addHeaders: function addHeaders(report, metricsString) {
|
|
19941
|
+
addHeaders: function addHeaders(currentHeaders, report, metricsString) {
|
|
19917
19942
|
if (metricsString) {
|
|
19918
19943
|
var metrics = metricsString.split(",");
|
|
19919
19944
|
metrics.forEach(function (metric) {
|
|
19920
|
-
var metricFound = false;
|
|
19921
19945
|
for (var _i = 0, _Object$keys = Object.keys(report); _i < _Object$keys.length; _i++) {
|
|
19922
19946
|
var key = _Object$keys[_i];
|
|
19923
19947
|
if (metric === key) {
|
|
19924
|
-
|
|
19925
|
-
metricFound = true;
|
|
19948
|
+
currentHeaders = util.addFieldToCsvString(currentHeaders, report.type + "." + report.id + "." + metric, ",");
|
|
19926
19949
|
break;
|
|
19927
19950
|
}
|
|
19928
19951
|
}
|
|
19929
|
-
if (!metricFound) {
|
|
19930
|
-
statCollector.logger.warn(LOG_PREFIX, "No metric found in RTC stats report '" + report.type + "': '" + metric + "'");
|
|
19931
|
-
}
|
|
19932
19952
|
});
|
|
19933
19953
|
}
|
|
19954
|
+
return currentHeaders;
|
|
19934
19955
|
},
|
|
19935
19956
|
updateCompression: function () {
|
|
19936
19957
|
var _updateCompression = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
@@ -19983,7 +20004,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
19983
20004
|
case 2:
|
|
19984
20005
|
_context5.p = 2;
|
|
19985
20006
|
_t2 = _context5.v;
|
|
19986
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
20007
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
19987
20008
|
statCollector.compression = "none";
|
|
19988
20009
|
case 3:
|
|
19989
20010
|
return _context5.a(2);
|
|
@@ -20004,7 +20025,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20004
20025
|
statCollector.send("webRTCMetricsClientDescription", data);
|
|
20005
20026
|
},
|
|
20006
20027
|
send: function send(message, data) {
|
|
20007
|
-
statCollector.logger.debug(LOG_PREFIX, data);
|
|
20028
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, data);
|
|
20008
20029
|
if (statCollector.wsConnection.readyState === WebSocket.OPEN) {
|
|
20009
20030
|
statCollector.wsConnection.send(JSON.stringify({
|
|
20010
20031
|
message: message,
|
|
@@ -20027,14 +20048,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20027
20048
|
},
|
|
20028
20049
|
collectMetrics: function () {
|
|
20029
20050
|
var _collectMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {
|
|
20030
|
-
var stats, metrics;
|
|
20051
|
+
var stats, metrics, lostMetrics;
|
|
20031
20052
|
return _regenerator().w(function (_context6) {
|
|
20032
20053
|
while (1) switch (_context6.n) {
|
|
20033
20054
|
case 0:
|
|
20034
|
-
if (!statCollector.timer) {
|
|
20035
|
-
_context6.n =
|
|
20055
|
+
if (!(statCollector.timer && !statCollector.timerBusy)) {
|
|
20056
|
+
_context6.n = 6;
|
|
20036
20057
|
break;
|
|
20037
20058
|
}
|
|
20059
|
+
// Unfortunately there are no real atomics in JS unless SharedArrayBuffer is used
|
|
20060
|
+
// So we guard the timer callback with a dumb boolean
|
|
20061
|
+
statCollector.timerBusy = true;
|
|
20038
20062
|
_context6.n = 1;
|
|
20039
20063
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
20040
20064
|
case 1:
|
|
@@ -20043,6 +20067,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20043
20067
|
statCollector.metricsBatch = [];
|
|
20044
20068
|
}
|
|
20045
20069
|
metrics = [];
|
|
20070
|
+
lostMetrics = [];
|
|
20046
20071
|
statCollector.headers.split(",").forEach(function (header) {
|
|
20047
20072
|
var components = header.split(".");
|
|
20048
20073
|
var descriptor = {
|
|
@@ -20050,7 +20075,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20050
20075
|
id: components[1],
|
|
20051
20076
|
name: components[2]
|
|
20052
20077
|
};
|
|
20053
|
-
var value = "
|
|
20078
|
+
var value = "NO";
|
|
20054
20079
|
if (stats[descriptor.type]) {
|
|
20055
20080
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
20056
20081
|
_step2;
|
|
@@ -20069,7 +20094,13 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20069
20094
|
}
|
|
20070
20095
|
}
|
|
20071
20096
|
metrics.push(value);
|
|
20097
|
+
if (value == "NO") {
|
|
20098
|
+
lostMetrics.push(descriptor);
|
|
20099
|
+
}
|
|
20072
20100
|
});
|
|
20101
|
+
if (lostMetrics.length) {
|
|
20102
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
20103
|
+
}
|
|
20073
20104
|
statCollector.metricsBatch.push(metrics);
|
|
20074
20105
|
statCollector.batchCount--;
|
|
20075
20106
|
if (!(statCollector.batchCount === 0)) {
|
|
@@ -20079,6 +20110,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20079
20110
|
_context6.n = 2;
|
|
20080
20111
|
return statCollector.sendMetrics();
|
|
20081
20112
|
case 2:
|
|
20113
|
+
_context6.n = 3;
|
|
20114
|
+
return statCollector.updateHeaders(stats);
|
|
20115
|
+
case 3:
|
|
20116
|
+
if (!_context6.v) {
|
|
20117
|
+
_context6.n = 5;
|
|
20118
|
+
break;
|
|
20119
|
+
}
|
|
20120
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
20121
|
+
_context6.n = 4;
|
|
20122
|
+
return statCollector.sendMetrics();
|
|
20123
|
+
case 4:
|
|
20124
|
+
statCollector.sendHeaders();
|
|
20125
|
+
case 5:
|
|
20126
|
+
statCollector.timerBusy = false;
|
|
20127
|
+
case 6:
|
|
20082
20128
|
return _context6.a(2);
|
|
20083
20129
|
}
|
|
20084
20130
|
}, _callee6);
|
|
@@ -20129,7 +20175,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
20129
20175
|
case 3:
|
|
20130
20176
|
_context7.p = 3;
|
|
20131
20177
|
_t3 = _context7.v;
|
|
20132
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
20178
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
20133
20179
|
metricsData = null;
|
|
20134
20180
|
case 4:
|
|
20135
20181
|
_context7.n = 6;
|