问题
vue3在使用声网开发web端的直播时,构建频道时报错:
AgoraRTCException: AgoraRTCError INVALID_REMOTE_USER: user is not in the channel
can not subscribe 1000004, this user is not in the channel

明明用户id是没错的,甚至在已经开发好的app端已经能看到web端的视频流了,却还是报这个错。
解决
markRaw
: 标记一个对象,使其永远不会转换为 proxy。返回对象本身。意思就是使其不能成为一个响应式对象。有些值不应该是响应式的,例如复杂的第三方类实例或 Vue 组件对象。
问题在于vue3在rtc = reactive({})
时给rtc创建了代理,我们使用markRaw,让rtc.client
失去响应式:
js
// 原本
rtc.client = AgoraRTC.createClient({ mode: 'live', codec: 'vp8' })
// 加入markRaw
rtc.client = markRaw(AgoraRTC.createClient({ mode: 'live', codec: 'vp8' }))
问题解决~~~