fix(meeting): 解决会议房间学生端事件监听器内存泄漏问题
- 在离开房间时移除 socket 的 message 事件监听器 - 添加声网客户端事件监听器的清理逻辑 - 确保在房间切换和组件卸载时完全清理所有事件监听器 - 避免重复创建声网客户端实例时保留旧监听器 - 修复了可能造成内存泄漏的事件监听器残留问题
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user