我在Chrome浏览器v30中运行自己的webrtc演示代码时遇到了麻烦。但代码完全适用于Firefox。 onicecandidate事件在另一个对等方接受要约之前触发。另一方面,对等连接仅在接受要约后创建。因此,当onicecandidate被触发时,在接收端以对等连接结束null错误。
据我所知,WebRTC和我的代码流程是
步骤1:来电者按下通话按钮
第2步:将调用getUsermedia
第3步:将创建对等连接
第4步:优惠将发送给来电者
第5步:优惠将显示给来电者
步骤6:仅在呼叫者接受呼叫之后创建对等连接
第7步:对等连接将创建答案
第8步:回复发送给来电者
步骤9:呼叫者将冰卡送到被叫者
步骤10:被调用者将icecandidates发送给调用者
上述流程的问题在于,在被叫方侧,对等连接仅在用户接受该提议后创建。但是在通知创建之后和通知被接受之前的呼叫者方面,候选人正被发送给呼叫者。调用方这是导致空错误。
我在badbin中粘贴了debuging登录: - pastebinDOTcom / gMgaxbBp
请为我解决这个问题。
答案 0 :(得分:1)
我想通了我自己。一旦设置了对等连接本地描述,问题实际上就是在chrome中,它将开始收冰。我们需要在提议/答案完成后转发这些冰候选人。我们需要以某种方式在本地存储它。这个代码完全适用于firefox的原因是在firefox中,icecandidates将被收集并放置在自己的报价中。因此,icecandidate会在提供/回答时进行交换。
答案 1 :(得分:0)
我之前创建了应答者PeerConnection - 至少在Firefox上它可以让它开始收集ICE候选者并加速连接;我想这会解决你的问题。