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