feat(im): 修复主叫取消通话时摄像头偶发未关闭的竞态

im
YunaiV 2026-05-17 21:02:54 +08:00
parent 85207bec98
commit 6cd49f0ce4
1 changed files with 7 additions and 0 deletions

View File

@ -120,11 +120,18 @@ export function useLiveKitRoom() {
const warmup = prewarmMedia(opts)
// 建立 WebSocket 信令 + WebRTC 媒体通道;完成后 localParticipant 可用,已在房参与者会通过 ParticipantConnected 事件批量推送
await r.connect(url, token)
// 期间被外部 disconnect 替换;中止后续 publish避免摄像头被重新启用
if (_room.value !== r) {
return
}
localParticipant.value = r.localParticipant
isConnected.value = true
// 预热结果不直接发布(避免 SDK 与外部 track 生命周期纠缠),仅等待权限就绪后再走标准 setXxxEnabled
await warmup
if (_room.value !== r) {
return
}
// 麦克风与摄像头权限相互独立,并行启用发布
const inits: Promise<unknown>[] = []
if (opts.audio) {