4

我在 chrome 浏览器 v30 中运行我自己的 webrtc 演示代码时遇到了麻烦。但该代码在 Firefox 上完美运行。onicecandidate 事件在对方接受提议之前触发。另一方面,仅在接受报价后才创建对等连接。因此,当 onicecandidate 被触发时,在接收端以对等连接空错误结束。据我了解 WebRTC 和我的代码流程是
第 1 步:呼叫者按下呼叫按钮
第 2 步:将调用 getUsermedia
第 3 步:将创建对等连接
第 4 步:将要约发送给呼叫者
第 5 步:要约将向呼叫者显示
第 6 步:仅在呼叫者接受呼叫后创建对等连接
第 7 步:对等连接将创建答案
第 8 步:将答案发送给调用者
第 9 步:调用者将把icecandidates 发送给被叫者
第10 步:被叫者将把icecandidates 发送给调用者

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

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

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

4

2 回答 2

7

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

于 2013-11-21T07:45:05.413 回答
0

我会更早地创建应答器 PeerConnection——至少在 Firefox 上它可以开始收集 ICE 候选者并加快连接速度;我认为它会解决你的问题。

于 2013-11-15T15:20:53.853 回答