fix(meeting): 解决学生端加入会议时已存在用户视频未播放问题

- 加入会议后检查已存在的远程用户列表
- 为已存在的每个用户调用视频播放确保函数
- 添加调试日志显示已存在用户的 UID 信息
- 确保主次视频窗口及所有远程用户视频正常播放
This commit is contained in:
2026-03-14 11:23:09 +08:00
parent 726a8026be
commit f5963f3203

View File

@ -577,11 +577,19 @@
screenShareOwnerUid.value = roomData.screenShareOwnerUid; screenShareOwnerUid.value = roomData.screenShareOwnerUid;
} }
await meeting.initAndJoin(roomData); await meeting.initAndJoin(roomData);
// ✅ 加入后先检查是否有已存在的远程用户
const existingUsers = meeting.client.value?.remoteUsers || [];
console.log('[学生端] 加入会议,已存在的远程用户:', existingUsers.map(u => u.uid));
// 等待 DOM 更新后再尝试播放视频 // 等待 DOM 更新后再尝试播放视频
await nextTick(); await nextTick();
setTimeout(() => { setTimeout(() => {
ensurePrimaryVideoPlaying(primaryUid.value); ensurePrimaryVideoPlaying(primaryUid.value);
ensurePrimaryVideoPlaying(secondaryUid.value); ensurePrimaryVideoPlaying(secondaryUid.value);
// 如果有已存在的用户,也检查一下
existingUsers.forEach(user => {
ensurePrimaryVideoPlaying(user.uid);
});
}, 500); }, 500);
initSelfWindowPosition(); initSelfWindowPosition();
}) })
@ -642,11 +650,19 @@
} }
if (classStatus.value === 'in_class') { if (classStatus.value === 'in_class') {
await meeting.initAndJoin(roomData); await meeting.initAndJoin(roomData);
// ✅ 加入后先检查是否有已存在的远程用户
const existingUsers = meeting.client.value?.remoteUsers || [];
console.log('[学生端] 加入会议,已存在的远程用户:', existingUsers.map(u => u.uid));
// 等待 DOM 更新后再尝试播放视频 // 等待 DOM 更新后再尝试播放视频
await nextTick(); await nextTick();
setTimeout(() => { setTimeout(() => {
ensurePrimaryVideoPlaying(primaryUid.value); ensurePrimaryVideoPlaying(primaryUid.value);
ensurePrimaryVideoPlaying(secondaryUid.value); ensurePrimaryVideoPlaying(secondaryUid.value);
// 如果有已存在的用户,也检查一下
existingUsers.forEach(user => {
ensurePrimaryVideoPlaying(user.uid);
});
}, 500); }, 500);
initSelfWindowPosition(); initSelfWindowPosition();
} else { } else {