问题发现
在进入登录页面以后,点击加入房间并推流,摄像头,麦克风等功能未能启用。
排查分析
查看控制台报错,显示为undefined
发现是sdk暂不支持,即应当使用qq的sdk却使用了网易的sdk
问题发现
客户端选择了qq,但实际使用的时候却是网易的。
排查分析
客户端选择了qq,但却使用了服务端的默认配置即网易
打log寻找被改变的地方
找到问题的核心代码:/src/control/meeting/index.ts
const rtcChannel = newloginRes.enableRTCChannelList.filter(i => i.isDefault === 1 && i.isEnable === 1)[0];
通过控制台打印发现,因rtcChannel为undefined,导致该段代码的逻辑直接选择了默认的可用的,忽视了客户端的选择。
因此修改成逐渐降级的策略
// 通道选择策略:用户选择 → 默认通道 → 第一个可用 → 降级默认
let rtcChannel = {
channel: RTCCont.rtcChannel || "qq",
isEnable: 1,
isDefault: 1,
};
if (newloginRes.enableRTCChannelList?.length) {
rtcChannel =
//用户选择 → 默认通道 → 第一个可用 → 降级默认
newloginRes.enableRTCChannelList.find(
(i) => i.channel === RTCCont.rtcChannel && i.isEnable === 1
) ||
newloginRes.enableRTCChannelList.find(
(i) => i.isDefault === 1 && i.isEnable === 1
) ||
newloginRes.enableRTCChannelList.find((i) => i.isEnable === 1) ||
rtcChannel;
}
console.log("Selected RTC channel:", rtcChannel);
问题解决
修改后重新登录,使用的配置与客户端相同,并且功能可用。