对等方销毁后如何解决信号?

问题描述

我正在创建一个视频聊天应用程序,但是当第二人称连接时,服务器返回一些奇怪的错误。请帮助我解决错误

当我打开新标签并粘贴相同的URL进行测试时,就会出现实际问题。

我正在使用“简单对等”:“ ^ 9.7.2”,

错误:对等方被破坏后无法发出信号

这也是屏幕截图

enter image description here

服务器代码

  socket.on("returning-signal",(payload) => {
    io.to(payload.callerID).emit("receiving-returned-signal",{
      signal: payload.signal,id: socket.id,});
  });

客户端

 socketRef.current = io.connect("http://localhost:1234");
    navigator.mediaDevices
      .getUserMedia({ video: videoConstraints,audio: false })
      .then((stream) => {
        userVideo.current.srcObject = stream;
        socketRef.current.emit("join-room",roomID);
        socketRef.current.on("all-users",(users) => {
          const peers = [];
          users.forEach((userID) => {
            const peer = createPeer(userID,socketRef.current.id,stream);
            peersRef.current.push({
              peerID: userID,peer,});
            peers.push(peer);
          });
          setPeers(peers);
        });

        socketRef.current.on("user-joined",(payload) => {
          const peer = addPeer(payload.signal,payload.callerID,stream);
          peersRef.current.push({
            peerID: payload.callerID,});

          setPeers((users) => [...users,peer]);
        });

        socketRef.current.on("receiving-returned-signal",(payload) => {
          const item = peersRef.current[0];
          item.peer.signal(payload.signal);
        });
      });

  function createPeer(userToSignal,callerID,stream) {
    const peer = new Peer({
      initiator: true,trickle: false,stream,});

    peer.on("signal",(signal) => {
      socketRef.current.emit("sending-signal",{
        userToSignal,signal,});
    });

    return peer;
  }

解决方法

找到解决方案

此版本"simple-peer": "^9.7.2"中存在问题,我将版本更改为9.6.2,它的工作方式就像魅力。 ✨?