Javascript RTPEERCONNECTION connectionState从不从;新";至;核对/&引用;“已连接”;

Javascript RTPEERCONNECTION connectionState从不从;新";至;核对/&引用;“已连接”;,javascript,google-chrome,webrtc,Javascript,Google Chrome,Webrtc,我已经从某人手中接手了一个WebRTC项目,尽管我开始思考这个概念,但我仍然被一个特定的问题难住了:让WebRTC连接从新的移动到检查/完成,等等 以下是chrome://webrtc-internals: 我们的代码调用connect(): 依次调用connectrtpeerconnection(): connectrtpeerconnection( 这段代码永远不会执行: this.rtcPeer.oniceconnectionstatechange = () => { this

我已经从某人手中接手了一个WebRTC项目,尽管我开始思考这个概念,但我仍然被一个特定的问题难住了:让WebRTC连接从
新的
移动到
检查
/
完成
,等等

以下是
chrome://webrtc-internals

我们的代码调用
connect()

依次调用
connectrtpeerconnection()

connectrtpeerconnection(

这段代码永远不会执行:

this.rtcPeer.oniceconnectionstatechange = () => {
  this.handleIceConnectionStateChangeEvent();
};
我遵循了每一条条件和代码路径,但目前没有看到问题可能是什么。是否有人遇到过这种情况,并且能够阐明一些需要考虑的潜在问题


谢谢!

好吧,您永远不会调用setRemoteDescription或通过addIceCandidate添加远程ice候选。没有这些,就没有人可以与我交谈。

当我在实施Kurento library for iOS时,尝试了以下方法:

生成SDPOffer

在我们这边设置LocalDescription

WebRTC开始生成ICE候选

通过WebSocket发送Ice候选人

此时,另一方发送了SDPAnswer

在我们这端处理SDPAnswer

在我们这边设置RemoteDescription

服务器开始发送在其末端收集的候选服务器

在我们这边的数组中添加了这些候选项

此处接收到连接状态更改为“正在检查”

此时已收到RemoteStream

此处接收到连接状态更改为“已连接”


希望有帮助!

谢谢你的回答!我没有包括那些代码片段,但我们有一个
onWebsocketMessage
函数,根据收到的消息,该函数将发送其他函数调用。
setRemoteDescription
addIceCandidate
是在执行过程中调用的两个函数ternals屏幕截图没有显示它们,因此您可能希望检查是否将其路由到正确的对等连接谢谢您的回复!我想我已经将问题缩小到我们的coturn服务器。我看到一些“分配超时”错误行。不过,您的工作流程很有用!一旦我弄清楚coturn的内容,如果这仍然不起作用,我将使用它是一个向导
) {
    return new Promise((resolve, reject) => {
      if (this.rtcPeer) {
        resolve();
      }
      console.log('started connecting');

      const rtcPeerOptions = {
        iceServers: [TRUNCATED],
      };

      console.log('rtcPeerOptions', rtcPeerOptions);
      this.rtcPeer = new RTCPeerConnection(rtcPeerOptions);
      console.log('rtcPeer object: ', this.rtcPeer);
      this.rtcPeer.onerror = reject;
      this.rtcPeer.onicecandidate = (candidate) => { this.handleIceCandidateEvent(candidate); };
      this.rtcPeer.oniceconnectionstatechange = () => {
        this.handleIceConnectionStateChangeEvent();
      };
      this.rtcPeer.onaddstream = () => { console.log('handleAddStreamEvent'); };
      this.rtcPeer.onremovestream = () => { console.log('handleRemoveStreamEvent'); };
      this.rtcPeer.onicegatheringstatechange = () => { console.log('handleIceGatheringStateChangeEvent'); };
      this.rtcPeer.onsignalingstatechange = () => { console.log('handleSignalingStateChangeEvent'); };
      this.rtcPeer.onnegotiationneeded = () => { console.log('handleNegotiationNeededEvent'); };
      resolve();
    });
  }
this.rtcPeer.oniceconnectionstatechange = () => {
  this.handleIceConnectionStateChangeEvent();
};