Привет, ребята, есть какая-то проблема с подключением RTCPeerConnection.onicecandidate не работает

#reactjs #socket.io #webrtc

Вопрос:

вы, ребята, делаете замечательные вещи, помогая людям, я ценю это, спасибо за все.

Итак, давайте зададим вопрос. Я изучаю WebRTC, сокет.io и английский :D(вот почему я не понимаю документы :/ ) с помощью ReactJS и ExpressJS. Я пытался создать базовый голосовой чат, но я не могу работать с RTCPeerConnection.onicecandidate. функции и консоль.журналы не работают в onicecandidate , это мой код реакции;

   componentDidMount() {
this.socket = io.connect(this.serverIP);
this.pc = new RTCPeerConnection(this.pc_config);
console.log("We are trying to connect  ", this.socket);
this.getmyAudio();

this.socket.on("online-peer", (socketID) => {
  console.log(socketID   "- Id user connected");
  this.pc.createOffer(this.sdpConstraints).then((sdp) => {
    this.pc.setLocalDescription(sdp);
    this.sendToPeer("offer", sdp, {
      socketID: socketID,
      remote: this.socket.id,
    });
  });
});

this.socket.on("offer", (data) => {
  console.log("I got an offer omg "   data.socketID   " "   this.socket.id);
  this.pc
    .setRemoteDescription(new RTCSessionDescription(data.sdp))
    .then(() => {
      this.pc.createAnswer(this.sdpConstraints).then((sdp) => {
        this.pc.setLocalDescription(sdp);
        this.sendToPeer("answer", sdp, {
          socketID: data.socketID,
          remote: this.socket.id,
        });
      });
    });
});

this.socket.on("answer", (data) => {
  console.log("answer-client");
  console.log(data.sdp)
  this.pc.setRemoteDescription(new RTCSessionDescription(data.sdp)).then(()=>{
    this.pc.onicecandidate = (e) => {
      console.log(" we are in candidate")
      this.sendToPeer("candidate", e.candidate, data.socketID);
    }
  })
});

this.socket.on("candidate", (data) => {
  this.pc.addIceCandidate(data);
  console.log("addIceCandidate");
});
 

}

и это данные ответа =>

   type: 'answer',
  sdp: 'v=0rn'  
    'o=- 198o215oooo54570o69 3 IN IP4 127.o.o.orn'  
    's=-rn'  
    't=0 0rn'  
    'a=extmap-allow-mixedrn'  
    'a=msid-semantic: WMSrn'
}
 

и это сокет.код ввода-вывода

 const app = express();

var io = require("socket.io")(4001); 

const port = 8080;

const server = app.listen(port, () => {
  console.log(`Sunucu ${port}. port'ta çalışıyor...`);
});

app.use(express.static(__dirname   "/build"));
app.get("/", (req, res, next) => {
  res.sendFile(__dirname   "/build/index.html");
});

io.listen(server);


io.on("connection", (socket) => {
  console.log("Someone connected  "   socket.id);

  socket.on("disconnect", () => {
    console.log(`${socket.id}- ID user disconnected`);
  });
});


const peers = io.of("/room");
let connectedPeers = new Map();


peers.on("connection", (socket) => {
 
  connectedPeers.set(socket.id, socket);


  console.log("Someone connected ------"   socket.id);
 

  socket.on("onlineUsers", (data) => {
    for (const socketID of connectedPeers.entries()) {
      if (socketID[0] !== data.socketID.socketID) {
        socket.emit("online-peer", socketID[0]);
      }
    }
  });

  socket.on("disconnect", () => {
    console.log("disconnected -"   socket.id);
    connectedPeers.delete(socket.id);
  });

  socket.on("offer", (data) => {
    for (const [socketID, socket] of connectedPeers.entries()) {
      if (socketID === data.socketID.socketID) {
        socket.emit("offer", { sdp: data.sdp, socketID: data.socketID.remote });
      }
    }
  });

  socket.on("answer", (data) => {
    console.log("answer-server");
    for (const [socketID, socket] of connectedPeers.entries()) {
      if (socketID === data.socketID.socketID) {
        socket.emit("answer", {sdp:data.sdp, socketID:data.socketID.remote});
      }
    }
  });

  socket.on("candidate", (data) => {
    for (const [socketID,socket] of connectedPeers.entries()) {
      if (socketID === data.socketID) {
        socket.emit("candidate", data);
      }
    }
  });
});