@rongcloud/plugin-rtc 5.4.7-alpha.3 → 5.4.7-beem-enterprise.1
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/dist/core/room/RCAudioLevelReport.d.ts +2 -0
- package/dist/core/webrtc/RCRTCPeerConnection.d.ts +10 -2
- package/dist/core/webrtc/sdp/ASdpBuilder.d.ts +5 -0
- package/dist/helper.d.ts +4 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.esm.js +148 -96
- package/dist/index.js +148 -96
- package/dist/index.umd.js +148 -96
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* RCRTC - v5.4.7-
|
|
3
|
-
* CommitId -
|
|
4
|
-
*
|
|
2
|
+
* RCRTC - v5.4.7-beem-enterprise.1
|
|
3
|
+
* CommitId - f6d422487789e25a83b33d99ce339c2d264d3d88
|
|
4
|
+
* Wed Sep 21 2022 12:27:46 GMT+0800 (China Standard Time)
|
|
5
5
|
* ©2020 RongCloud, Inc. All rights reserved.
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
@@ -6477,7 +6477,8 @@ class RCTrack extends engine.EventEmitter {
|
|
|
6477
6477
|
return __awaiter(this, void 0, void 0, function* () {
|
|
6478
6478
|
engine.logger.info(RCLoggerTag.L_TRACK_PLAY_T, {
|
|
6479
6479
|
element,
|
|
6480
|
-
options
|
|
6480
|
+
options,
|
|
6481
|
+
msg: `start play trackId: ${this._id}`
|
|
6481
6482
|
}, {
|
|
6482
6483
|
logSource: engine.LogSource.RTC
|
|
6483
6484
|
});
|
|
@@ -7352,8 +7353,12 @@ const getVideoTrackInfo = (track) => {
|
|
|
7352
7353
|
const settings = track.getSettings();
|
|
7353
7354
|
const constraints = track.getConstraints();
|
|
7354
7355
|
return {
|
|
7355
|
-
|
|
7356
|
-
|
|
7356
|
+
/**
|
|
7357
|
+
* applyConstraints 方法应用的宽高约束不一定可以立马生效
|
|
7358
|
+
* 取值优先 constraints
|
|
7359
|
+
*/
|
|
7360
|
+
width: getValue(constraints.width) || settings.width || 0,
|
|
7361
|
+
height: getValue(constraints.height) || settings.height || 0,
|
|
7357
7362
|
frameRate: settings.frameRate || getValue(constraints.frameRate)
|
|
7358
7363
|
};
|
|
7359
7364
|
};
|
|
@@ -7544,7 +7549,7 @@ const isNull = (val) => {
|
|
|
7544
7549
|
* 公有云连接私有云 SDK 为非法连接
|
|
7545
7550
|
*/
|
|
7546
7551
|
const isIllegalConnection = (navi) => {
|
|
7547
|
-
return
|
|
7552
|
+
return !true ;
|
|
7548
7553
|
};
|
|
7549
7554
|
/**
|
|
7550
7555
|
* 获取将要发布的 track 数量
|
|
@@ -7938,7 +7943,7 @@ const getCommonHeader = () => ({
|
|
|
7938
7943
|
'Content-Type': 'application/json;charset=UTF-8',
|
|
7939
7944
|
'Cache-Control': 'no-cache',
|
|
7940
7945
|
ClientType: `web|${browserInfo.browser}|${browserInfo.version}`,
|
|
7941
|
-
ClientVersion: "5.4.7-
|
|
7946
|
+
ClientVersion: "5.4.7-beem-enterprise.1",
|
|
7942
7947
|
'Client-Session-Id': getUUID(),
|
|
7943
7948
|
'Request-Id': Date.now().toString()
|
|
7944
7949
|
});
|
|
@@ -8456,16 +8461,11 @@ class AbstractStatParser {
|
|
|
8456
8461
|
});
|
|
8457
8462
|
}
|
|
8458
8463
|
parseRTCStatsReport(reports) {
|
|
8459
|
-
const keys = reports.keys();
|
|
8460
8464
|
const stats = {};
|
|
8461
|
-
|
|
8462
|
-
|
|
8463
|
-
|
|
8464
|
-
const value = reports.get(key);
|
|
8465
|
-
if (!/^RTCCodec_/.test(key)) {
|
|
8466
|
-
stats[key] = value;
|
|
8465
|
+
for (const key of reports.keys()) {
|
|
8466
|
+
if (!key.includes('RTCCodec_')) {
|
|
8467
|
+
stats[key] = reports.get(key);
|
|
8467
8468
|
}
|
|
8468
|
-
temp = keys.next();
|
|
8469
8469
|
}
|
|
8470
8470
|
return stats;
|
|
8471
8471
|
}
|
|
@@ -9267,6 +9267,13 @@ class ASdpBuilder {
|
|
|
9267
9267
|
}
|
|
9268
9268
|
return stream;
|
|
9269
9269
|
}
|
|
9270
|
+
/**
|
|
9271
|
+
* 它将 SDP 标头中的 `a=group` 行替换为 `b=AS` 和 `b=TIAS` 行
|
|
9272
|
+
* @param {number} maxBitrate - 流的最大比特率。
|
|
9273
|
+
*/
|
|
9274
|
+
setHeaderBitrate(maxBitrate) {
|
|
9275
|
+
this.SDPHeader = this.SDPHeader.replace(/(\r\ns=[^\r\n]+)/ig, `$1\r\nc=IN IP4 0.0.0.0\r\nb=AS:${maxBitrate * ASdpBuilder.KBitrate}\r\nb=TIAS:${maxBitrate * ASdpBuilder.KBitrate * 850}`);
|
|
9276
|
+
}
|
|
9270
9277
|
/**
|
|
9271
9278
|
* 它获取音频流并将它们映射到一个新数组,其中每个项目都是调用 setAudioItemBitrate 函数的结果
|
|
9272
9279
|
* @param {IRCTrackBitrate} bitrate - 以 kbps 为单位的比特率。
|
|
@@ -9357,7 +9364,7 @@ class ASdpBuilder {
|
|
|
9357
9364
|
*/
|
|
9358
9365
|
addAudioBlineAS(sdpAudioBlock, bitrate) {
|
|
9359
9366
|
if (!/\bb=AS:\d+\b/ig.test(sdpAudioBlock)) {
|
|
9360
|
-
return sdpAudioBlock.replace(
|
|
9367
|
+
return sdpAudioBlock.replace(/(\bc=IN[^\r\n]+)/ig, `$1\r\nb=AS:${bitrate.max * ASdpBuilder.KBitrate}\r\nb=TIAS:${bitrate.max * ASdpBuilder.KBitrate * 850}`);
|
|
9361
9368
|
}
|
|
9362
9369
|
return sdpAudioBlock;
|
|
9363
9370
|
}
|
|
@@ -9455,7 +9462,7 @@ class ASdpBuilder {
|
|
|
9455
9462
|
addVideoBlineAS(sdpVideoBlock, bitrate) {
|
|
9456
9463
|
// b=AS: 定义本端带宽信息
|
|
9457
9464
|
if (!/\bb=AS:\d+\b/ig.test(sdpVideoBlock)) {
|
|
9458
|
-
return sdpVideoBlock.replace(
|
|
9465
|
+
return sdpVideoBlock.replace(/(\bc=IN[^\r\n]+)/ig, `$1\r\nb=AS:${bitrate.max * ASdpBuilder.KBitrate}\r\nb=TIAS:${bitrate.max * ASdpBuilder.KBitrate * 850}`);
|
|
9459
9466
|
}
|
|
9460
9467
|
return sdpVideoBlock;
|
|
9461
9468
|
}
|
|
@@ -9584,7 +9591,7 @@ class ASdpStrategy {
|
|
|
9584
9591
|
return __awaiter(this, void 0, void 0, function* () {
|
|
9585
9592
|
// 过滤行末的空格,服务可能产生空格数据
|
|
9586
9593
|
sdp = ASdpBuilder.trimBlankLine(sdp);
|
|
9587
|
-
|
|
9594
|
+
logger.info(`set remote answer -> ${sdp}`);
|
|
9588
9595
|
try {
|
|
9589
9596
|
yield this._peer.setRemoteDescription({ type: 'answer', sdp });
|
|
9590
9597
|
}
|
|
@@ -10221,6 +10228,10 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10221
10228
|
// 上报上下行数据至北极星定时器
|
|
10222
10229
|
this._reportR3R4ToPolarisTimer = null;
|
|
10223
10230
|
this._isDestroyed = false;
|
|
10231
|
+
// 格式化后的质量数据
|
|
10232
|
+
this._reportStatsData = null;
|
|
10233
|
+
// 格式化之前的质量数据
|
|
10234
|
+
this._originReportStatsData = null;
|
|
10224
10235
|
this._reportListener = null;
|
|
10225
10236
|
const sdpSemantics = ASdpStrategy.getSdpSemantics();
|
|
10226
10237
|
const peer = this._rtcPeerConn = new RTCPeerConnection({ sdpSemantics });
|
|
@@ -10252,15 +10263,24 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10252
10263
|
logSource: engine.LogSource.RTC
|
|
10253
10264
|
});
|
|
10254
10265
|
}
|
|
10266
|
+
startAutoExecute(gap = 1000) {
|
|
10267
|
+
this._reportStatsTimer = setTimeout(() => {
|
|
10268
|
+
this._reportHandle(gap);
|
|
10269
|
+
this._reportStatsTimer = this.startAutoExecute();
|
|
10270
|
+
}, gap);
|
|
10271
|
+
}
|
|
10272
|
+
stopAutoExecute() {
|
|
10273
|
+
clearTimeout(this._reportStatsTimer);
|
|
10274
|
+
}
|
|
10255
10275
|
_onICEConnectionStateChange() {
|
|
10256
10276
|
var _a, _b;
|
|
10257
10277
|
logger.info(`oniceconnectionstatechange -> ${this._rtcPeerConn.iceConnectionState}, ${this._pcName}`);
|
|
10258
10278
|
if (this._rtcPeerConn.iceConnectionState === 'connected') {
|
|
10259
10279
|
// 开启 peerConnection stats 统计定时器
|
|
10260
10280
|
if (this._reportStatsTimer) {
|
|
10261
|
-
|
|
10281
|
+
this.stopAutoExecute();
|
|
10262
10282
|
}
|
|
10263
|
-
this.
|
|
10283
|
+
this.startAutoExecute();
|
|
10264
10284
|
}
|
|
10265
10285
|
// ICE 连接中断后,需要尝试重新走 exchange 流程以恢复
|
|
10266
10286
|
if (this._rtcPeerConn.iceConnectionState === 'failed' || this._rtcPeerConn.iceConnectionState === 'disconnected') {
|
|
@@ -10515,33 +10535,53 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10515
10535
|
* 获取 peerConnection stats 数据并格式化
|
|
10516
10536
|
* @returns 返回格式化后的数据
|
|
10517
10537
|
*/
|
|
10518
|
-
_getStatsData() {
|
|
10519
|
-
var _a, _b;
|
|
10538
|
+
_getStatsData(gap = 1000) {
|
|
10539
|
+
var _a, _b, _c;
|
|
10520
10540
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10521
|
-
|
|
10522
|
-
|
|
10523
|
-
|
|
10524
|
-
|
|
10525
|
-
|
|
10541
|
+
let data = null;
|
|
10542
|
+
if (((_a = this._originReportStatsData) === null || _a === void 0 ? void 0 : _a.timestamp) && this._originReportStatsData.timestamp > Date.now() - gap) {
|
|
10543
|
+
data = this._originReportStatsData.data;
|
|
10544
|
+
}
|
|
10545
|
+
else {
|
|
10546
|
+
const reports = yield this._rtcPeerConn.getStats();
|
|
10547
|
+
/**
|
|
10548
|
+
* 解析 stats 数据
|
|
10549
|
+
*/
|
|
10550
|
+
data = (_b = this.reportParser) === null || _b === void 0 ? void 0 : _b.parseRTCStatsReport(reports);
|
|
10551
|
+
this._originReportStatsData = {
|
|
10552
|
+
data,
|
|
10553
|
+
timestamp: Date.now()
|
|
10554
|
+
};
|
|
10555
|
+
}
|
|
10526
10556
|
/**
|
|
10527
10557
|
* 获取 report 中的 iceCandidatePair、senders、receivers 中的所有字段
|
|
10528
10558
|
*/
|
|
10529
|
-
const formatData = (
|
|
10559
|
+
const formatData = (_c = this.reportParser) === null || _c === void 0 ? void 0 : _c.formatRCRTCStateReport(data);
|
|
10530
10560
|
return formatData;
|
|
10531
10561
|
});
|
|
10532
10562
|
}
|
|
10533
|
-
getAudioLevelReportData() {
|
|
10534
|
-
var _a, _b;
|
|
10563
|
+
getAudioLevelReportData(gap = 1000) {
|
|
10564
|
+
var _a, _b, _c;
|
|
10535
10565
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10536
|
-
|
|
10537
|
-
|
|
10538
|
-
|
|
10539
|
-
|
|
10540
|
-
|
|
10566
|
+
let data = null;
|
|
10567
|
+
if (((_a = this._originReportStatsData) === null || _a === void 0 ? void 0 : _a.timestamp) && this._originReportStatsData.timestamp > Date.now() - gap) {
|
|
10568
|
+
data = this._originReportStatsData.data;
|
|
10569
|
+
}
|
|
10570
|
+
else {
|
|
10571
|
+
const reports = yield this._rtcPeerConn.getStats();
|
|
10572
|
+
/**
|
|
10573
|
+
* 解析 stats 数据
|
|
10574
|
+
*/
|
|
10575
|
+
data = (_b = this.reportParser) === null || _b === void 0 ? void 0 : _b.parseRTCStatsReport(reports);
|
|
10576
|
+
this._originReportStatsData = {
|
|
10577
|
+
data,
|
|
10578
|
+
timestamp: Date.now()
|
|
10579
|
+
};
|
|
10580
|
+
}
|
|
10541
10581
|
if (!data) {
|
|
10542
10582
|
return [];
|
|
10543
10583
|
}
|
|
10544
|
-
const audioLevelData = (
|
|
10584
|
+
const audioLevelData = (_c = this.reportParser) === null || _c === void 0 ? void 0 : _c.getAudioLevelList(data);
|
|
10545
10585
|
return audioLevelData;
|
|
10546
10586
|
});
|
|
10547
10587
|
}
|
|
@@ -10549,13 +10589,14 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10549
10589
|
* 通知用户质量数据、peerConnection 北极星数据上报
|
|
10550
10590
|
* @todo
|
|
10551
10591
|
*/
|
|
10552
|
-
_reportHandle() {
|
|
10592
|
+
_reportHandle(gap) {
|
|
10553
10593
|
var _a, _b;
|
|
10554
10594
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10555
|
-
const formatData = yield this._getStatsData();
|
|
10595
|
+
const formatData = yield this._getStatsData(gap);
|
|
10556
10596
|
if (!formatData) {
|
|
10557
10597
|
return;
|
|
10558
10598
|
}
|
|
10599
|
+
this._reportStatsData = formatData;
|
|
10559
10600
|
/**
|
|
10560
10601
|
* 组装用户层抛出数据
|
|
10561
10602
|
*/
|
|
@@ -10563,13 +10604,19 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10563
10604
|
(_b = (_a = this._reportListener) === null || _a === void 0 ? void 0 : _a.onStateReport) === null || _b === void 0 ? void 0 : _b.call(_a, reportData);
|
|
10564
10605
|
});
|
|
10565
10606
|
}
|
|
10607
|
+
/**
|
|
10608
|
+
* 获取缓存的本地质量数据
|
|
10609
|
+
*/
|
|
10610
|
+
_getCacheStatsData() {
|
|
10611
|
+
return this._reportStatsData;
|
|
10612
|
+
}
|
|
10566
10613
|
/**
|
|
10567
10614
|
* 北极星上报 R3、R4 数据
|
|
10568
10615
|
*/
|
|
10569
10616
|
_sendR3R4Data() {
|
|
10570
10617
|
var _a;
|
|
10571
10618
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10572
|
-
const formatData =
|
|
10619
|
+
const formatData = this._getCacheStatsData();
|
|
10573
10620
|
if (!formatData) {
|
|
10574
10621
|
return true;
|
|
10575
10622
|
}
|
|
@@ -10588,7 +10635,9 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10588
10635
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10589
10636
|
clearTimeout(this._reportR3R4ToPolarisTimer);
|
|
10590
10637
|
yield this._sendR3R4Data();
|
|
10591
|
-
this._reportR3R4ToPolarisTimer = setTimeout(
|
|
10638
|
+
this._reportR3R4ToPolarisTimer = setTimeout(() => {
|
|
10639
|
+
this.__reportR3R4ToPolaris();
|
|
10640
|
+
}, 2000);
|
|
10592
10641
|
});
|
|
10593
10642
|
}
|
|
10594
10643
|
getRTCPeerConn() {
|
|
@@ -10600,7 +10649,7 @@ class RCRTCPeerConnection extends engine.EventEmitter {
|
|
|
10600
10649
|
clearTimeout(this._reportR3R4ToPolarisTimer);
|
|
10601
10650
|
// 停止计时
|
|
10602
10651
|
if (this._reportStatsTimer) {
|
|
10603
|
-
|
|
10652
|
+
this.stopAutoExecute();
|
|
10604
10653
|
this._reportStatsTimer = null;
|
|
10605
10654
|
}
|
|
10606
10655
|
this.registerReportListener(null);
|
|
@@ -10827,7 +10876,7 @@ class PolarisReporter {
|
|
|
10827
10876
|
* 加入房间
|
|
10828
10877
|
*/
|
|
10829
10878
|
sendR1() {
|
|
10830
|
-
const rtcVersion = "5.4.7-
|
|
10879
|
+
const rtcVersion = "5.4.7-beem-enterprise.1";
|
|
10831
10880
|
const imVersion = this._context.getCoreVersion();
|
|
10832
10881
|
const platform = 'web';
|
|
10833
10882
|
const pcName = navigator.platform;
|
|
@@ -10860,7 +10909,7 @@ class RCAudioLevelReport {
|
|
|
10860
10909
|
/**
|
|
10861
10910
|
* 通知业务端音量 > 0 的数据,数组每一项包含 track、audioLevel
|
|
10862
10911
|
*/
|
|
10863
|
-
_audioLevelReport() {
|
|
10912
|
+
_audioLevelReport(gap) {
|
|
10864
10913
|
return __awaiter(this, void 0, void 0, function* () {
|
|
10865
10914
|
if (!this._audioLevelChangeHandler) {
|
|
10866
10915
|
return;
|
|
@@ -10872,23 +10921,31 @@ class RCAudioLevelReport {
|
|
|
10872
10921
|
if (pc.getRTCPeerConn().iceConnectionState === 'new') {
|
|
10873
10922
|
return;
|
|
10874
10923
|
}
|
|
10875
|
-
const audioLevelData = yield pc.getAudioLevelReportData();
|
|
10876
|
-
|
|
10924
|
+
const audioLevelData = yield pc.getAudioLevelReportData(gap);
|
|
10925
|
+
audioLevelData === null || audioLevelData === void 0 ? void 0 : audioLevelData.forEach(item => {
|
|
10877
10926
|
const { userId } = parseTrackId(item.trackId);
|
|
10878
10927
|
const isLocal = this._room.getCrtUserId() === userId;
|
|
10879
10928
|
const track = isLocal ? this._room.getLocalTrack(item.trackId) : this._room.getRemoteTrack(item.trackId);
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10929
|
+
if (track) {
|
|
10930
|
+
audioLevelList.push({
|
|
10931
|
+
track,
|
|
10932
|
+
audioLevel: item.audioLevel || 0
|
|
10933
|
+
});
|
|
10934
|
+
}
|
|
10886
10935
|
});
|
|
10887
|
-
audioLevelList.push(...list);
|
|
10888
10936
|
}
|
|
10889
10937
|
this._audioLevelChangeHandler(audioLevelList);
|
|
10890
10938
|
});
|
|
10891
10939
|
}
|
|
10940
|
+
startAutoExecute(gap = 1000) {
|
|
10941
|
+
this._timer = setTimeout(() => {
|
|
10942
|
+
this._audioLevelReport(gap);
|
|
10943
|
+
this._timer = this.startAutoExecute(gap);
|
|
10944
|
+
}, gap);
|
|
10945
|
+
}
|
|
10946
|
+
stopAutoExecute() {
|
|
10947
|
+
clearTimeout(this._timer);
|
|
10948
|
+
}
|
|
10892
10949
|
onAudioLevelChange(handler, gap) {
|
|
10893
10950
|
if (gap < 300 || gap > 1000) {
|
|
10894
10951
|
logger.error('the valid range of onAudioLevelChange params "gap" is: > 300 && < 1000');
|
|
@@ -10899,12 +10956,12 @@ class RCAudioLevelReport {
|
|
|
10899
10956
|
}
|
|
10900
10957
|
else {
|
|
10901
10958
|
this._audioLevelChangeHandler = handler;
|
|
10902
|
-
this.
|
|
10959
|
+
this.startAutoExecute(gap);
|
|
10903
10960
|
}
|
|
10904
10961
|
}
|
|
10905
10962
|
clearAudioLevelReportTimer() {
|
|
10906
10963
|
if (this._timer) {
|
|
10907
|
-
|
|
10964
|
+
this.stopAutoExecute();
|
|
10908
10965
|
this._timer = null;
|
|
10909
10966
|
}
|
|
10910
10967
|
}
|
|
@@ -11650,14 +11707,7 @@ class JoinRoomCommand extends BaseCommand {
|
|
|
11650
11707
|
}, { logSource: engine.LogSource.RTC });
|
|
11651
11708
|
return { code: exports.RCRTCCode.SIGNAL_DISCONNECTED };
|
|
11652
11709
|
}
|
|
11653
|
-
if (isIllegalConnection(context.getNaviInfo()))
|
|
11654
|
-
engine.logger.error(logTag, {
|
|
11655
|
-
status: RCLoggerStatus.FAILED,
|
|
11656
|
-
code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,
|
|
11657
|
-
msg: 'navi_usl error'
|
|
11658
|
-
}, { logSource: engine.LogSource.RTC });
|
|
11659
|
-
return { code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR };
|
|
11660
|
-
}
|
|
11710
|
+
if (isIllegalConnection(context.getNaviInfo())) ;
|
|
11661
11711
|
if (!engine.validate('roomId', this.roomId, engine.notEmptyString, true)) {
|
|
11662
11712
|
engine.logger.error(logTag, {
|
|
11663
11713
|
status: RCLoggerStatus.FAILED,
|
|
@@ -12116,7 +12166,7 @@ class ParseUserStateCommand extends BaseCommand {
|
|
|
12116
12166
|
users.forEach(item => {
|
|
12117
12167
|
const userId = item.userId;
|
|
12118
12168
|
if (+item.state === 0) {
|
|
12119
|
-
logger.
|
|
12169
|
+
logger.info(`user joined -> ${userId}`);
|
|
12120
12170
|
// 对端 im 重连之后调加入房间信令获取最新数据,服务会给本端下发“对端加入房间”的消息,本端内存已包含对端人员,所以需过滤掉
|
|
12121
12171
|
const resArr = store.getResourcesByUserId(userId);
|
|
12122
12172
|
if (!resArr) {
|
|
@@ -12125,7 +12175,7 @@ class ParseUserStateCommand extends BaseCommand {
|
|
|
12125
12175
|
store.setResourcesByUserId(userId, resArr || []);
|
|
12126
12176
|
}
|
|
12127
12177
|
else {
|
|
12128
|
-
logger.
|
|
12178
|
+
logger.info(`user left -> ${userId}`);
|
|
12129
12179
|
item.switchRoleType ? downgrade.push(userId) : left.push(userId);
|
|
12130
12180
|
}
|
|
12131
12181
|
});
|
|
@@ -12434,6 +12484,16 @@ class PublishCommand extends BaseCommand {
|
|
|
12434
12484
|
const { track: localTrack } = track instanceof RCLocalTrack ? { track } : track;
|
|
12435
12485
|
localTracks.push(localTrack);
|
|
12436
12486
|
});
|
|
12487
|
+
/**
|
|
12488
|
+
* 将发布的视频流按从小到大进行排序
|
|
12489
|
+
*/
|
|
12490
|
+
tracks.sort((item, nextItem) => {
|
|
12491
|
+
const { track: localTrack } = item instanceof RCLocalTrack ? { track: item } : item;
|
|
12492
|
+
const { max: maxBitrate } = localTrack.getBitrate();
|
|
12493
|
+
const { track: nextLocalTrack } = nextItem instanceof RCLocalTrack ? { track: nextItem } : nextItem;
|
|
12494
|
+
const { max: maxNextBitrate } = nextLocalTrack.getBitrate();
|
|
12495
|
+
return maxBitrate - maxNextBitrate;
|
|
12496
|
+
});
|
|
12437
12497
|
/**
|
|
12438
12498
|
* 一个 peerConnection 上行不超过 10 个
|
|
12439
12499
|
*/
|
|
@@ -13496,12 +13556,14 @@ class RCAbstractRoom extends engine.EventEmitter {
|
|
|
13496
13556
|
}
|
|
13497
13557
|
__parseInnerMessage(message) {
|
|
13498
13558
|
const { targetId: roomId, conversationType } = message;
|
|
13499
|
-
// 过滤非 RTC 消息
|
|
13500
|
-
if (conversationType !== engine.ConversationType.RTC_ROOM) {
|
|
13501
|
-
return false;
|
|
13502
|
-
}
|
|
13503
13559
|
// 为 RTC 消息,但不属于当前房间的不处理
|
|
13504
13560
|
if (roomId !== this._roomId) {
|
|
13561
|
+
engine.logger.warn(RCLoggerTag.L_RTC_CLIENT_MESSAGE_O, {
|
|
13562
|
+
status: RCLoggerStatus.FAILED,
|
|
13563
|
+
message: `roomId is different, msg roomId-> ${roomId}, this._roomId-> ${this._roomId} `
|
|
13564
|
+
}, {
|
|
13565
|
+
logSource: engine.LogSource.RTC
|
|
13566
|
+
});
|
|
13505
13567
|
return true;
|
|
13506
13568
|
}
|
|
13507
13569
|
logger.info(`recv inner msg -> message: ${JSON.stringify(message)} | roomid: ${this._roomId}`);
|
|
@@ -16754,16 +16816,7 @@ class RCAudienceClient {
|
|
|
16754
16816
|
logSource: engine.LogSource.RTC
|
|
16755
16817
|
});
|
|
16756
16818
|
const tracks = [];
|
|
16757
|
-
if (isIllegalConnection(this._context.getNaviInfo()))
|
|
16758
|
-
engine.logger.error(RCLoggerTag.L_AUDIENCE_CLIENT_SUBSCRIBE_R, {
|
|
16759
|
-
status: RCLoggerStatus.FAILED,
|
|
16760
|
-
code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,
|
|
16761
|
-
msg: 'navi_url error'
|
|
16762
|
-
}, {
|
|
16763
|
-
logSource: engine.LogSource.RTC
|
|
16764
|
-
});
|
|
16765
|
-
return { code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR, tracks };
|
|
16766
|
-
}
|
|
16819
|
+
if (isIllegalConnection(this._context.getNaviInfo())) ;
|
|
16767
16820
|
// 客户端主动调用 api 发请求时,清除 ice 断线重连的定时器
|
|
16768
16821
|
!this._fromRetry && ((_a = this._pc) === null || _a === void 0 ? void 0 : _a.clearReTryExchangeTimer());
|
|
16769
16822
|
this._fromRetry = false;
|
|
@@ -18773,7 +18826,6 @@ class RCRTCClient extends RCMediaStreamCapture {
|
|
|
18773
18826
|
this._context.onmessage = this._handleMessage.bind(this);
|
|
18774
18827
|
}
|
|
18775
18828
|
_handleMessage(message) {
|
|
18776
|
-
var _a;
|
|
18777
18829
|
// 过滤非 RTC 消息
|
|
18778
18830
|
if (message.conversationType !== engine.ConversationType.RTC_ROOM) {
|
|
18779
18831
|
return false;
|
|
@@ -18785,13 +18837,22 @@ class RCRTCClient extends RCMediaStreamCapture {
|
|
|
18785
18837
|
room.__parseInnerMessage(message);
|
|
18786
18838
|
});
|
|
18787
18839
|
}
|
|
18788
|
-
(_a = this._crtRoom) === null || _a === void 0 ? void 0 : _a.__parseInnerMessage(message);
|
|
18789
18840
|
engine.logger.info(RCLoggerTag.L_RTC_CLIENT_MESSAGE_O, {
|
|
18790
18841
|
status: RCLoggerStatus.SUCCESSED,
|
|
18791
|
-
message
|
|
18842
|
+
message
|
|
18792
18843
|
}, {
|
|
18793
18844
|
logSource: engine.LogSource.RTC
|
|
18794
18845
|
});
|
|
18846
|
+
if (!this._crtRoom) {
|
|
18847
|
+
engine.logger.warn(RCLoggerTag.L_RTC_CLIENT_MESSAGE_O, {
|
|
18848
|
+
status: RCLoggerStatus.FAILED,
|
|
18849
|
+
message: 'the crtRoom is empty'
|
|
18850
|
+
}, {
|
|
18851
|
+
logSource: engine.LogSource.RTC
|
|
18852
|
+
});
|
|
18853
|
+
return true;
|
|
18854
|
+
}
|
|
18855
|
+
this._crtRoom.__parseInnerMessage(message);
|
|
18795
18856
|
return true;
|
|
18796
18857
|
}
|
|
18797
18858
|
/**
|
|
@@ -18994,16 +19055,7 @@ class RCRTCClient extends RCMediaStreamCapture {
|
|
|
18994
19055
|
}, {
|
|
18995
19056
|
logSource: engine.LogSource.RTC
|
|
18996
19057
|
});
|
|
18997
|
-
if (isIllegalConnection(this._context.getNaviInfo()))
|
|
18998
|
-
engine.logger.error(RCLoggerTag.L_RTC_CLIENT_JOIN_LIVING_ROOM_AS_AUDIENCE_R, {
|
|
18999
|
-
status: RCLoggerStatus.FAILED,
|
|
19000
|
-
code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,
|
|
19001
|
-
msg: 'navi_url error'
|
|
19002
|
-
}, {
|
|
19003
|
-
logSource: engine.LogSource.RTC
|
|
19004
|
-
});
|
|
19005
|
-
return { code: exports.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR };
|
|
19006
|
-
}
|
|
19058
|
+
if (isIllegalConnection(this._context.getNaviInfo())) ;
|
|
19007
19059
|
if (!(engine.validate('roomId', roomId, engine.notEmptyString, true) &&
|
|
19008
19060
|
engine.validate('livingType', livingType, (value) => value === exports.RCLivingType.AUDIO || value === exports.RCLivingType.VIDEO))) {
|
|
19009
19061
|
engine.logger.error(RCLoggerTag.L_RTC_CLIENT_JOIN_LIVING_ROOM_AS_AUDIENCE_R, {
|
|
@@ -19311,9 +19363,9 @@ const installer = {
|
|
|
19311
19363
|
logger.error('Please use the https protocol or use `http://localhost` to open the page!');
|
|
19312
19364
|
return false;
|
|
19313
19365
|
}
|
|
19314
|
-
engine.VersionManage.add('plugin-rtc', "5.4.7-
|
|
19315
|
-
if (!engine.VersionManage.validEngine("5.
|
|
19316
|
-
logger.error(`The current engine version '${engine.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '${"5.
|
|
19366
|
+
engine.VersionManage.add('plugin-rtc', "5.4.7-beem-enterprise.1");
|
|
19367
|
+
if (!engine.VersionManage.validEngine("5.4.2-beem-enterprise.2")) {
|
|
19368
|
+
logger.error(`The current engine version '${engine.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '${"5.4.2-beem-enterprise.2"}'.`);
|
|
19317
19369
|
return false;
|
|
19318
19370
|
}
|
|
19319
19371
|
return true;
|
|
@@ -19322,7 +19374,7 @@ const installer = {
|
|
|
19322
19374
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
19323
19375
|
logger.setLogLevel(options.logLevel);
|
|
19324
19376
|
logger.setLogStdout(options.logStdout);
|
|
19325
|
-
logger.warn(`RCRTC Version: ${"5.4.7-
|
|
19377
|
+
logger.warn(`RCRTC Version: ${"5.4.7-beem-enterprise.1"}, Commit: ${"f6d422487789e25a83b33d99ce339c2d264d3d88"}`);
|
|
19326
19378
|
logger.warn(`browserInfo.browser -> ${browserInfo.browser}`);
|
|
19327
19379
|
logger.warn(`browserInfo.supportsUnifiedPlan -> ${browserInfo.supportsUnifiedPlan}`);
|
|
19328
19380
|
logger.warn(`browserInfo.version -> ${browserInfo.version}`);
|