当发送答案之前接收到ICE考生错误(Errors when ICE Candidates are r

2019-07-03 20:46发布

我建立在Chrome 23的WebRTC连接要连接你需要允许浏览器使用摄像头和麦克风的本地流。 在发送方,我检查,如果可以得到本地流,我不会发出录用通知等,直到这一刻。 然后提议被发送,浏览器立即开始发送ICE候选人。

那么,如果没有得到当地媒体流远程浏览器还没有我得到SYNTAX_ERR: DOM Exception 12peerConnection.addIceCandidate(candidate) ,每ICE候选人获得。

我查了一下资料上addIceCandidate但有关先决条件没有资料。

我想我可以延迟通过延迟,并等待远程客户端添加本地流信号从发送要约ICE候选人,但这是额外的通信需要和不看的权利。

我可以采用某种远程ICE候选人添加到webkitRTCPeerConnection答案被发送和当地媒体流连接之前?

Answer 1:

之后,我写了这个问题的答案我脑子里浮现......有没有必要接受ICE候选人之前,需要连接本地流,但remoteDescription应设置(应在收到报价的瞬间完成)。 在我的代码我等待着,设置remoteDescription和发送答案,直到浏览器获取本地流。



Answer 2:

从Episodex该解决方案帮助了我。

首先setRemoteDescription,然后创建自己的数据流,然后创建并发送答案。

  // On read message
  if (msg.sdp.type === 'offer') {

        this.peerConnection.setRemoteDescription(new RTCSessionDescription(msg.sdp))
          .then(() => navigator.mediaDevices.getUserMedia({audio: true, video: true}))
          .then(stream => this.peerConnection.addStream(stream));
          .then(() => this.peerConnection.createAnswer())
          .then(answer => this.peerConnection.setLocalDescription(answer))
          .then(() => this.sendMessage({sdp: this.peerConnection.localDescription}))

  } 


文章来源: Errors when ICE Candidates are received before answer is sent