Node.js WebRTC-SDP与以前为此类型生成的SDP不匹配

Node.js WebRTC-SDP与以前为此类型生成的SDP不匹配,node.js,sockets,socket.io,webrtc,Node.js,Sockets,Socket.io,Webrtc,我正在用WebRTC和Socket.io(带Node.JS)构建一对一视频聊天室,这个错误阻止了我 当我进入聊天室时,我可以看到我自己(显示本地视频),但我无法获取远程视频 因为这方面的资源不多,而且我是初学者,所以我决定来这里 因为我找不到任何错误 下面是代码: WebRTC: //i have declared pc and pc2 before like let pc; let pc2; function onSuccess() {}; function onError(error) {

我正在用WebRTC和Socket.io(带Node.JS)构建一对一视频聊天室,这个错误阻止了我

当我进入聊天室时,我可以看到我自己(显示本地视频),但我无法获取远程视频

因为这方面的资源不多,而且我是初学者,所以我决定来这里 因为我找不到任何错误

下面是代码:

WebRTC:

//i have declared pc and pc2 before like let pc; let pc2;
function onSuccess() {};
function onError(error) {
  console.log(error.message);
};

function startWebRTC(isOfferer) {
  pc = new RTCPeerConnection(configuration);
  pc2 = new RTCPeerConnection(configuration)

  pc.onicecandidate = event => {
    if (event.candidate) {
      socket.emit('candidate', {
        candidate: event.candidate
      });
    }
  };

  if (isOfferer) {
    pc.onnegotiationneeded = () => {
      pc.createOffer().then(localDescCreated).catch(onError);
    }
  }

  pc.ontrack = event => {
    const stream = event.streams[0];
    if (!remoteVideo.srcObject || remoteVideo.srcObject.id !== stream.id) {
      remoteVideo.srcObject = stream;
    }
  };

 navigator.mediaDevices.getUserMedia({
    audio: true,
    video: true,
  }).then(stream => {
    localVideo.srcObject = stream;
    stream.getTracks().forEach(track => pc.addTrack(track, stream));
  }, onError);

  socket.on('data', (data) => {
    if (socket.id === data.id) {
      return;
    }
    if (data.sdp) {
      pc2.setRemoteDescription(new RTCSessionDescription(data.sdp), () => {
        if (pc2.remoteDescription.type === 'offer') {
          pc2.createAnswer().then(localDescCreated).catch(err => {
            console.log(err.message)
          });
        }
      }, onError);
    } else if (data.candidate) {
      pc2.addIceCandidate(
        new RTCIceCandidate(data.candidate), onSuccess, onError
      );
    }
  });
}

function localDescCreated(desc) {
 pc.setLocalDescription(
    desc,
    () => socket.emit('sdp', {
      sdp: pc.localDescription
    }),
    onError
  );
}
Socket.io:

//room number is incremented when number of users reach to 2 

 socket.on('candidate', (data)=>{
     socket.broadcast.to(socket.current_vidroom).emit('data', {candidate: 
 data.candidate, id: socket.id})
 })

  socket.on('sdp', (data)=>{
      socket.broadcast.to(socket.current_vidroom).emit('data', {sdp: 
  data.sdp, id: socket.id})
  })

你的代码使用OnGotiationRequired,这是已知的Chrome中存在bug的代码。我正在使用Chrome74。你是在告诉我使用createOffer而不需要进行协商?像
if(isOfferer){pc.createOffer().then(localDescCreated).catch(onError);}
只需删除onnegotiationneeded,就可以了?你的代码乱七八糟了。您正在每侧创建两个
rtpeerconnection
s。卸下第二个和s/
pc2
/
pc
/你就有东西了。