Google chrome onicecandidate事件在接受答案之前触发

Google chrome onicecandidate事件在接受答案之前触发,google-chrome,mozilla,webrtc,Google Chrome,Mozilla,Webrtc,我在chrome浏览器v30中运行自己的webrtc演示代码时遇到了麻烦。但该代码在firefox上运行良好。onicecandidate事件在其他对等方接受要约之前触发。另一方面,只有在接受报价后才能创建对等连接。因此,当触发onicecandidate时,接收端会出现对等连接null错误。 据我所知,我的代码的WebRTC和流程是 步骤1:呼叫方按下呼叫按钮 步骤2:getUsermedia将被调用 步骤3:将创建对等连接 步骤4:报价将发送给来电者 步骤5:将向来电者显示优惠 步骤6:只有

我在chrome浏览器v30中运行自己的webrtc演示代码时遇到了麻烦。但该代码在firefox上运行良好。onicecandidate事件在其他对等方接受要约之前触发。另一方面,只有在接受报价后才能创建对等连接。因此,当触发onicecandidate时,接收端会出现对等连接null错误。 据我所知,我的代码的WebRTC和流程是
步骤1:呼叫方按下呼叫按钮
步骤2:getUsermedia将被调用
步骤3:将创建对等连接
步骤4:报价将发送给来电者
步骤5:将向来电者显示优惠
步骤6:只有在呼叫者接受呼叫后才能创建对等连接
步骤7:对等连接将创建答案
步骤8:应答发送给呼叫方
步骤9:呼叫方将ICE候选项发送给被呼叫方
第十步:被叫方将候选ICE发送给被叫方

上述流程的问题是,在被调用方端,对等连接仅在用户接受报价后创建。但在调用方,在创建要约之后和要约被接受之前,ice候选者被发送给调用方。调用者端这将导致空错误

我在pastebin中粘贴了调试日志:- pastebinDOTcom/gMgaxbBp


请为我提供这个问题的解决方案。

我会更早地创建Answer PeerConnection-在Firefox上,至少它可以开始收集ICE候选者并加速连接;我想它会解决你的问题。

我自己想出来的。问题实际上是在chrome中,一旦设置了对等连接本地描述,它就会开始收集冰块。只有在报价/答复完成后,我们才需要转发这些ice候选人。我们需要以某种方式将其存储在本地。这段代码在firefox上完美运行的原因是firefox中的候选代码将被收集并放置在offer中。因此,ice候选者将根据报价/答案本身进行交换。

即使在七年多之后,您的回答也让我清楚了ice候选者交换的时间安排:我正在开发一个完全不同的技术堆栈,但您为我指出了正确的方向:非常感谢!