结束通话后未删除视频元素使用 Webrtc PeerJS SocketIO 的视频聊天应用程序 - 无法获取 peer.on("close", ())

问题描述

所以我正在使用 WebRTC、SocketIO 和 PeerJS 创建一个基于网络的视频聊天应用程序。但是当一个用户离开时,其余用户仍然可以看到断线用户的冻结视频元素。我怀疑这是因为 peer.on("close",()) 没有被解雇。

const connectToNewUser = (userId,stream) => {
  const call = peer.call(userId,stream) //calls new user and sends them our stream
  const video = document.createElement('video') //creates new video element for new user
  call.on('stream',userVideoStream => {
      addVideoStream(video,userVideoStream) //sends new user our stream
  })
  call.on('close',function(){
    console.log('check')
    video.remove();
    delete videoGrid[userId];
  })
  peers[userId] = call;
}


const addVideoStream = (video,stream) => {
  video.srcObject = stream
  video.addEventListener('loadedMetadata',() => {
      video.play();
  })
  videoGrid.append(video);
}

我也怀疑这可能是因为我必须从视频网格中删除视频元素?但是我不确定如果我的 peer.on("close",()) 没有被解雇,我该怎么做。

socket.on("user-disconnected",(userId) => {
  //message in chat saying x user disconnected 
  console.log("New User disconnected");
  if (peers[userId]) peers[userId].close();
});

我还看到某处我应该尝试从“用户断开连接”部分中删除视频元素,但是由于它不了解视频元素是什么,这将如何工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)