diff --git a/src/views/meeting/meeting-room/meeting-room-student.vue b/src/views/meeting/meeting-room/meeting-room-student.vue index 7bb110d..be357fb 100644 --- a/src/views/meeting/meeting-room/meeting-room-student.vue +++ b/src/views/meeting/meeting-room/meeting-room-student.vue @@ -457,7 +457,14 @@ } isLeaving.value = true; try { + // ✅ 移除所有事件监听器 socket.off('message', onSocketMessage); + + // ✅ 移除声网客户端的事件监听器 + if (meeting.client.value) { + meeting.client.value.removeAllListeners?.(); + } + try { meetingSocket.leaveRoom(socket); } catch {} @@ -663,7 +670,14 @@ if (isLeaving.value) { return; } + // ✅ 移除所有事件监听器 socket.off('message', onSocketMessage); + + // ✅ 移除声网客户端的事件监听器 + if (meeting.client.value) { + meeting.client.value.removeAllListeners?.(); + } + await cleanup(); try { meetingSocket.leaveRoom(socket); diff --git a/src/views/meeting/meeting-room/useAgoraMeeting.ts b/src/views/meeting/meeting-room/useAgoraMeeting.ts index b2c43c1..2da1b6d 100644 --- a/src/views/meeting/meeting-room/useAgoraMeeting.ts +++ b/src/views/meeting/meeting-room/useAgoraMeeting.ts @@ -213,7 +213,7 @@ export function useAgoraMeeting( if (client.value) { client.value.removeAllListeners?.(); } - + client.value = AgoraRTC.createClient({ mode: 'rtc', codec: 'vp8' }); if (tokenManagerRef.value) { tokenManagerRef.value.bindClient(client.value); @@ -223,7 +223,6 @@ export function useAgoraMeeting( * 播放远程视频到指定播放器 * @deprecated 学生端使用 autoPlayRemoteVideo=false,由业务层自行处理 */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars const playRemoteVideo = (user: IAgoraRTCRemoteUser, playerId: string) => { console.log(`【声网】准备播放远程视频 ${playerId}:`, user.uid); setTimeout(() => {