@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
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,14 +12232,17 @@ 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;
|
|
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:
|
|
@@ -12227,6 +12251,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12227
12251
|
statCollector.metricsBatch = [];
|
|
12228
12252
|
}
|
|
12229
12253
|
metrics = [];
|
|
12254
|
+
lostMetrics = [];
|
|
12230
12255
|
statCollector.headers.split(",").forEach(function (header) {
|
|
12231
12256
|
var components = header.split(".");
|
|
12232
12257
|
var descriptor = {
|
|
@@ -12234,7 +12259,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12234
12259
|
id: components[1],
|
|
12235
12260
|
name: components[2]
|
|
12236
12261
|
};
|
|
12237
|
-
var value = "
|
|
12262
|
+
var value = "NO";
|
|
12238
12263
|
if (stats[descriptor.type]) {
|
|
12239
12264
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
12240
12265
|
_step2;
|
|
@@ -12253,7 +12278,13 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12253
12278
|
}
|
|
12254
12279
|
}
|
|
12255
12280
|
metrics.push(value);
|
|
12281
|
+
if (value == "NO") {
|
|
12282
|
+
lostMetrics.push(descriptor);
|
|
12283
|
+
}
|
|
12256
12284
|
});
|
|
12285
|
+
if (lostMetrics.length) {
|
|
12286
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
12287
|
+
}
|
|
12257
12288
|
statCollector.metricsBatch.push(metrics);
|
|
12258
12289
|
statCollector.batchCount--;
|
|
12259
12290
|
if (!(statCollector.batchCount === 0)) {
|
|
@@ -12263,6 +12294,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12263
12294
|
_context6.n = 2;
|
|
12264
12295
|
return statCollector.sendMetrics();
|
|
12265
12296
|
case 2:
|
|
12297
|
+
_context6.n = 3;
|
|
12298
|
+
return statCollector.updateHeaders(stats);
|
|
12299
|
+
case 3:
|
|
12300
|
+
if (!_context6.v) {
|
|
12301
|
+
_context6.n = 5;
|
|
12302
|
+
break;
|
|
12303
|
+
}
|
|
12304
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
12305
|
+
_context6.n = 4;
|
|
12306
|
+
return statCollector.sendMetrics();
|
|
12307
|
+
case 4:
|
|
12308
|
+
statCollector.sendHeaders();
|
|
12309
|
+
case 5:
|
|
12310
|
+
statCollector.timerBusy = false;
|
|
12311
|
+
case 6:
|
|
12266
12312
|
return _context6.a(2);
|
|
12267
12313
|
}
|
|
12268
12314
|
}, _callee6);
|
|
@@ -12274,7 +12320,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12274
12320
|
}(),
|
|
12275
12321
|
sendMetrics: function () {
|
|
12276
12322
|
var _sendMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
12277
|
-
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString,
|
|
12323
|
+
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString, delimiter, data, _t3;
|
|
12278
12324
|
return _regenerator().w(function (_context7) {
|
|
12279
12325
|
while (1) switch (_context7.p = _context7.n) {
|
|
12280
12326
|
case 0:
|
|
@@ -12284,14 +12330,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12284
12330
|
for (j = 0; j < statCollector.metricsBatch[i].length; j++) {
|
|
12285
12331
|
valueString = valueToString(statCollector.metricsBatch[i][j]);
|
|
12286
12332
|
previousString = "";
|
|
12287
|
-
|
|
12333
|
+
delimiter = ";";
|
|
12288
12334
|
if (previous) {
|
|
12289
12335
|
previousString = valueToString(previous[j]);
|
|
12290
12336
|
}
|
|
12291
12337
|
if (valueString === previousString) {
|
|
12292
12338
|
valueString = "";
|
|
12293
12339
|
}
|
|
12294
|
-
metricsString = util.addFieldToCsvString(metricsString, valueString,
|
|
12340
|
+
metricsString = util.addFieldToCsvString(metricsString, valueString, delimiter);
|
|
12341
|
+
if (j > 0 && metricsString === "") {
|
|
12342
|
+
metricsString = delimiter;
|
|
12343
|
+
}
|
|
12295
12344
|
}
|
|
12296
12345
|
previous = statCollector.metricsBatch[i];
|
|
12297
12346
|
metricsToSend.push(metricsString);
|
|
@@ -12310,7 +12359,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12310
12359
|
case 3:
|
|
12311
12360
|
_context7.p = 3;
|
|
12312
12361
|
_t3 = _context7.v;
|
|
12313
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12362
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12314
12363
|
metricsData = null;
|
|
12315
12364
|
case 4:
|
|
12316
12365
|
_context7.n = 6;
|
|
@@ -12862,14 +12911,14 @@ var setPublishingBitrate = function setPublishingBitrate(sdp, mediaConnection, m
|
|
|
12862
12911
|
}
|
|
12863
12912
|
return sdp;
|
|
12864
12913
|
};
|
|
12865
|
-
var addFieldToCsvString = function addFieldToCsvString(csvString, field,
|
|
12866
|
-
if (field !== "" && field.indexOf(
|
|
12914
|
+
var addFieldToCsvString = function addFieldToCsvString(csvString, field, delimiter) {
|
|
12915
|
+
if (field !== "" && field.indexOf(delimiter) >= 0) {
|
|
12867
12916
|
field = '"' + field + '"';
|
|
12868
12917
|
}
|
|
12869
|
-
if (csvString === ""
|
|
12918
|
+
if (csvString === "") {
|
|
12870
12919
|
csvString = field;
|
|
12871
12920
|
} else {
|
|
12872
|
-
csvString = csvString +
|
|
12921
|
+
csvString = csvString + delimiter + field;
|
|
12873
12922
|
}
|
|
12874
12923
|
return csvString;
|
|
12875
12924
|
};
|