@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
|
@@ -11619,6 +11619,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11619
11619
|
metricsBatch: null,
|
|
11620
11620
|
timer: null,
|
|
11621
11621
|
batchCount: 0,
|
|
11622
|
+
timerBusy: false,
|
|
11622
11623
|
start: function () {
|
|
11623
11624
|
var _start = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
|
|
11624
11625
|
var error;
|
|
@@ -11701,7 +11702,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11701
11702
|
_context2.n = 1;
|
|
11702
11703
|
break;
|
|
11703
11704
|
}
|
|
11704
|
-
statCollector.logger.error(LOG_PREFIX, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11705
|
+
statCollector.logger.error(LOG_PREFIX + "-" + statCollector.id, "Can't update WebRTC metrics sending: no parameters passed");
|
|
11705
11706
|
return _context2.a(2);
|
|
11706
11707
|
case 1:
|
|
11707
11708
|
if (!(description.types || description.compression)) {
|
|
@@ -11761,14 +11762,26 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11761
11762
|
}(),
|
|
11762
11763
|
updateHeaders: function () {
|
|
11763
11764
|
var _updateHeaders = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
11764
|
-
var stats
|
|
11765
|
+
var stats,
|
|
11766
|
+
currentHeaders,
|
|
11767
|
+
headersChanged,
|
|
11768
|
+
newMetrics,
|
|
11769
|
+
_args3 = arguments;
|
|
11765
11770
|
return _regenerator().w(function (_context3) {
|
|
11766
11771
|
while (1) switch (_context3.n) {
|
|
11767
11772
|
case 0:
|
|
11773
|
+
stats = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : null;
|
|
11774
|
+
currentHeaders = "";
|
|
11775
|
+
headersChanged = false;
|
|
11776
|
+
if (stats) {
|
|
11777
|
+
_context3.n = 2;
|
|
11778
|
+
break;
|
|
11779
|
+
}
|
|
11768
11780
|
_context3.n = 1;
|
|
11769
11781
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
11770
11782
|
case 1:
|
|
11771
11783
|
stats = _context3.v;
|
|
11784
|
+
case 2:
|
|
11772
11785
|
Object.keys(statCollector.description.types).forEach(function (type) {
|
|
11773
11786
|
var typeDescriptor = statCollector.description.types[type];
|
|
11774
11787
|
var metricsString = "";
|
|
@@ -11781,11 +11794,11 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11781
11794
|
}
|
|
11782
11795
|
if (stats[type]) {
|
|
11783
11796
|
stats[type].forEach(function (report) {
|
|
11784
|
-
statCollector.logger.debug(LOG_PREFIX, type + " report: " + JSON.stringify(report));
|
|
11797
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " report: " + JSON.stringify(report));
|
|
11785
11798
|
if (contentFilters) {
|
|
11786
11799
|
var filtersMatched = true;
|
|
11787
11800
|
for (var filter in contentFilters) {
|
|
11788
|
-
statCollector.logger.debug(LOG_PREFIX, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
11801
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, type + " filter by " + filter + ": " + JSON.stringify(contentFilters[filter]));
|
|
11789
11802
|
var filterMatched = false;
|
|
11790
11803
|
if (report[filter]) {
|
|
11791
11804
|
var _iterator = _createForOfIteratorHelper(contentFilters[filter]),
|
|
@@ -11793,7 +11806,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11793
11806
|
try {
|
|
11794
11807
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
11795
11808
|
var value = _step.value;
|
|
11796
|
-
statCollector.logger.debug(LOG_PREFIX, filter + ": " + value + " <> " + report[filter]);
|
|
11809
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, filter + ": " + value + " <> " + report[filter]);
|
|
11797
11810
|
if (report[filter] === value) {
|
|
11798
11811
|
filterMatched = true;
|
|
11799
11812
|
break;
|
|
@@ -11811,18 +11824,30 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11811
11824
|
}
|
|
11812
11825
|
}
|
|
11813
11826
|
if (filtersMatched) {
|
|
11814
|
-
statCollector.addHeaders(report, metricsString);
|
|
11827
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
11815
11828
|
}
|
|
11816
11829
|
} else {
|
|
11817
|
-
statCollector.addHeaders(report, metricsString);
|
|
11830
|
+
currentHeaders = statCollector.addHeaders(currentHeaders, report, metricsString);
|
|
11818
11831
|
}
|
|
11819
11832
|
});
|
|
11820
11833
|
} else {
|
|
11821
|
-
statCollector.logger.
|
|
11834
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, "No report type found in RTC stats: '" + type + "'");
|
|
11822
11835
|
}
|
|
11823
11836
|
});
|
|
11824
|
-
|
|
11825
|
-
|
|
11837
|
+
if (currentHeaders !== statCollector.headers) {
|
|
11838
|
+
headersChanged = true;
|
|
11839
|
+
newMetrics = [];
|
|
11840
|
+
currentHeaders.split(",").forEach(function (header) {
|
|
11841
|
+
if (statCollector.headers.indexOf(header) === -1) {
|
|
11842
|
+
newMetrics.push(header);
|
|
11843
|
+
}
|
|
11844
|
+
});
|
|
11845
|
+
if (newMetrics.length) {
|
|
11846
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics to be collected: " + newMetrics.toString());
|
|
11847
|
+
}
|
|
11848
|
+
statCollector.headers = currentHeaders;
|
|
11849
|
+
}
|
|
11850
|
+
return _context3.a(2, headersChanged);
|
|
11826
11851
|
}
|
|
11827
11852
|
}, _callee3);
|
|
11828
11853
|
}));
|
|
@@ -11831,24 +11856,20 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11831
11856
|
}
|
|
11832
11857
|
return updateHeaders;
|
|
11833
11858
|
}(),
|
|
11834
|
-
addHeaders: function addHeaders(report, metricsString) {
|
|
11859
|
+
addHeaders: function addHeaders(currentHeaders, report, metricsString) {
|
|
11835
11860
|
if (metricsString) {
|
|
11836
11861
|
var metrics = metricsString.split(",");
|
|
11837
11862
|
metrics.forEach(function (metric) {
|
|
11838
|
-
var metricFound = false;
|
|
11839
11863
|
for (var _i = 0, _Object$keys = Object.keys(report); _i < _Object$keys.length; _i++) {
|
|
11840
11864
|
var key = _Object$keys[_i];
|
|
11841
11865
|
if (metric === key) {
|
|
11842
|
-
|
|
11843
|
-
metricFound = true;
|
|
11866
|
+
currentHeaders = util.addFieldToCsvString(currentHeaders, report.type + "." + report.id + "." + metric, ",");
|
|
11844
11867
|
break;
|
|
11845
11868
|
}
|
|
11846
11869
|
}
|
|
11847
|
-
if (!metricFound) {
|
|
11848
|
-
statCollector.logger.warn(LOG_PREFIX, "No metric found in RTC stats report '" + report.type + "': '" + metric + "'");
|
|
11849
|
-
}
|
|
11850
11870
|
});
|
|
11851
11871
|
}
|
|
11872
|
+
return currentHeaders;
|
|
11852
11873
|
},
|
|
11853
11874
|
updateCompression: function () {
|
|
11854
11875
|
var _updateCompression = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
@@ -11901,7 +11922,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11901
11922
|
case 2:
|
|
11902
11923
|
_context5.p = 2;
|
|
11903
11924
|
_t2 = _context5.v;
|
|
11904
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
11925
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't compress metrics data using " + compression + ": " + _t2);
|
|
11905
11926
|
statCollector.compression = "none";
|
|
11906
11927
|
case 3:
|
|
11907
11928
|
return _context5.a(2);
|
|
@@ -11922,7 +11943,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11922
11943
|
statCollector.send("webRTCMetricsClientDescription", data);
|
|
11923
11944
|
},
|
|
11924
11945
|
send: function send(message, data) {
|
|
11925
|
-
statCollector.logger.debug(LOG_PREFIX, data);
|
|
11946
|
+
statCollector.logger.debug(LOG_PREFIX + "-" + statCollector.id, data);
|
|
11926
11947
|
if (statCollector.wsConnection.readyState === WebSocket.OPEN) {
|
|
11927
11948
|
statCollector.wsConnection.send(JSON.stringify({
|
|
11928
11949
|
message: message,
|
|
@@ -11945,14 +11966,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11945
11966
|
},
|
|
11946
11967
|
collectMetrics: function () {
|
|
11947
11968
|
var _collectMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6() {
|
|
11948
|
-
var stats, metrics;
|
|
11969
|
+
var stats, metrics, lostMetrics;
|
|
11949
11970
|
return _regenerator().w(function (_context6) {
|
|
11950
11971
|
while (1) switch (_context6.n) {
|
|
11951
11972
|
case 0:
|
|
11952
|
-
if (!statCollector.timer) {
|
|
11953
|
-
_context6.n =
|
|
11973
|
+
if (!(statCollector.timer && !statCollector.timerBusy)) {
|
|
11974
|
+
_context6.n = 6;
|
|
11954
11975
|
break;
|
|
11955
11976
|
}
|
|
11977
|
+
// Unfortunately there are no real atomics in JS unless SharedArrayBuffer is used
|
|
11978
|
+
// So we guard the timer callback with a dumb boolean
|
|
11979
|
+
statCollector.timerBusy = true;
|
|
11956
11980
|
_context6.n = 1;
|
|
11957
11981
|
return statCollector.mediaConnection.getWebRTCStats();
|
|
11958
11982
|
case 1:
|
|
@@ -11961,6 +11985,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11961
11985
|
statCollector.metricsBatch = [];
|
|
11962
11986
|
}
|
|
11963
11987
|
metrics = [];
|
|
11988
|
+
lostMetrics = [];
|
|
11964
11989
|
statCollector.headers.split(",").forEach(function (header) {
|
|
11965
11990
|
var components = header.split(".");
|
|
11966
11991
|
var descriptor = {
|
|
@@ -11968,7 +11993,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11968
11993
|
id: components[1],
|
|
11969
11994
|
name: components[2]
|
|
11970
11995
|
};
|
|
11971
|
-
var value = "
|
|
11996
|
+
var value = "NO";
|
|
11972
11997
|
if (stats[descriptor.type]) {
|
|
11973
11998
|
var _iterator2 = _createForOfIteratorHelper(stats[descriptor.type]),
|
|
11974
11999
|
_step2;
|
|
@@ -11987,7 +12012,13 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11987
12012
|
}
|
|
11988
12013
|
}
|
|
11989
12014
|
metrics.push(value);
|
|
12015
|
+
if (value == "NO") {
|
|
12016
|
+
lostMetrics.push(descriptor);
|
|
12017
|
+
}
|
|
11990
12018
|
});
|
|
12019
|
+
if (lostMetrics.length) {
|
|
12020
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "Missing metrics: " + JSON.stringify(lostMetrics));
|
|
12021
|
+
}
|
|
11991
12022
|
statCollector.metricsBatch.push(metrics);
|
|
11992
12023
|
statCollector.batchCount--;
|
|
11993
12024
|
if (!(statCollector.batchCount === 0)) {
|
|
@@ -11997,6 +12028,21 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
11997
12028
|
_context6.n = 2;
|
|
11998
12029
|
return statCollector.sendMetrics();
|
|
11999
12030
|
case 2:
|
|
12031
|
+
_context6.n = 3;
|
|
12032
|
+
return statCollector.updateHeaders(stats);
|
|
12033
|
+
case 3:
|
|
12034
|
+
if (!_context6.v) {
|
|
12035
|
+
_context6.n = 5;
|
|
12036
|
+
break;
|
|
12037
|
+
}
|
|
12038
|
+
statCollector.logger.info(LOG_PREFIX + "-" + statCollector.id, "RTC metrics list has changed, sending a new metrics description");
|
|
12039
|
+
_context6.n = 4;
|
|
12040
|
+
return statCollector.sendMetrics();
|
|
12041
|
+
case 4:
|
|
12042
|
+
statCollector.sendHeaders();
|
|
12043
|
+
case 5:
|
|
12044
|
+
statCollector.timerBusy = false;
|
|
12045
|
+
case 6:
|
|
12000
12046
|
return _context6.a(2);
|
|
12001
12047
|
}
|
|
12002
12048
|
}, _callee6);
|
|
@@ -12008,7 +12054,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12008
12054
|
}(),
|
|
12009
12055
|
sendMetrics: function () {
|
|
12010
12056
|
var _sendMetrics = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
12011
|
-
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString,
|
|
12057
|
+
var previous, metricsToSend, metricsData, i, metricsString, j, valueString, previousString, delimiter, data, _t3;
|
|
12012
12058
|
return _regenerator().w(function (_context7) {
|
|
12013
12059
|
while (1) switch (_context7.p = _context7.n) {
|
|
12014
12060
|
case 0:
|
|
@@ -12018,14 +12064,17 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12018
12064
|
for (j = 0; j < statCollector.metricsBatch[i].length; j++) {
|
|
12019
12065
|
valueString = valueToString(statCollector.metricsBatch[i][j]);
|
|
12020
12066
|
previousString = "";
|
|
12021
|
-
|
|
12067
|
+
delimiter = ";";
|
|
12022
12068
|
if (previous) {
|
|
12023
12069
|
previousString = valueToString(previous[j]);
|
|
12024
12070
|
}
|
|
12025
12071
|
if (valueString === previousString) {
|
|
12026
12072
|
valueString = "";
|
|
12027
12073
|
}
|
|
12028
|
-
metricsString = util.addFieldToCsvString(metricsString, valueString,
|
|
12074
|
+
metricsString = util.addFieldToCsvString(metricsString, valueString, delimiter);
|
|
12075
|
+
if (j > 0 && metricsString === "") {
|
|
12076
|
+
metricsString = delimiter;
|
|
12077
|
+
}
|
|
12029
12078
|
}
|
|
12030
12079
|
previous = statCollector.metricsBatch[i];
|
|
12031
12080
|
metricsToSend.push(metricsString);
|
|
@@ -12044,7 +12093,7 @@ var StreamStatsCollector = function StreamStatsCollector(description, id, mediaC
|
|
|
12044
12093
|
case 3:
|
|
12045
12094
|
_context7.p = 3;
|
|
12046
12095
|
_t3 = _context7.v;
|
|
12047
|
-
statCollector.logger.warn(LOG_PREFIX, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12096
|
+
statCollector.logger.warn(LOG_PREFIX + "-" + statCollector.id, "Can't send metrics data using" + statCollector.compression + ": " + _t3);
|
|
12048
12097
|
metricsData = null;
|
|
12049
12098
|
case 4:
|
|
12050
12099
|
_context7.n = 6;
|
|
@@ -12596,14 +12645,14 @@ var setPublishingBitrate = function setPublishingBitrate(sdp, mediaConnection, m
|
|
|
12596
12645
|
}
|
|
12597
12646
|
return sdp;
|
|
12598
12647
|
};
|
|
12599
|
-
var addFieldToCsvString = function addFieldToCsvString(csvString, field,
|
|
12600
|
-
if (field !== "" && field.indexOf(
|
|
12648
|
+
var addFieldToCsvString = function addFieldToCsvString(csvString, field, delimiter) {
|
|
12649
|
+
if (field !== "" && field.indexOf(delimiter) >= 0) {
|
|
12601
12650
|
field = '"' + field + '"';
|
|
12602
12651
|
}
|
|
12603
|
-
if (csvString === ""
|
|
12652
|
+
if (csvString === "") {
|
|
12604
12653
|
csvString = field;
|
|
12605
12654
|
} else {
|
|
12606
|
-
csvString = csvString +
|
|
12655
|
+
csvString = csvString + delimiter + field;
|
|
12607
12656
|
}
|
|
12608
12657
|
return csvString;
|
|
12609
12658
|
};
|