2017-07-02 97 views
0

可以请有人澄清之间的区别iceConnectionstate:完成iceConnectionstate:连接冰连接状态,完成与连接

当我使用webrtc连接到浏览器时,我可以使用数据通道交换数据,但出于某种原因,浏览器上的iceConnectionstate会使接受提供更改的浏览器完成更改以连接。

任何想法,如果这是正常的?

回答

0

ICE连接状态转换有点棘手,下面的流程图可以清楚地了解可能的转换。

ICE Transport State Diagram

在简单的话:
新/检查:不是在连接
连接/完成:媒体路径可用
断开/失败:媒体路径不可用(无论您在数据通道上发送的数据是否会到达另一端)

阅读完整摘要here

Still WebRTC团队正在努力使其稳定& spec投诉。
当前铬行为是令人困惑的,所以我提交了一个bug,你可以通过明星来获得通知。

1

简而言之:

  • 连接:实测值工作候选对,但仍执行连接性检查找到一个更好的。
  • 完成:找到一对正在工作的候选人并完成了连接检查。

对于大多数情况,您可以将连接/完成状态视为同一事物。

请注意,正如Ajay所述,标准在如何定义状态以及如何在Chrome中实现它们之间有一些显着的差异。主要想到的是:

  • 没有“候选人结束”信号,所以没有实现候选状态定义的那些部分。这意味着如果远程候选人迟到,可以在没有ICE重启的情况下从“完成”回到“连接”。虽然我认为这在实践中很少见。
  • ICE状态实际上是ICE + DTLS状态的组合(请参阅:https://bugs.chromium.org/p/webrtc/issues/detail?id=6145)。这是因为它是在“RTCPeerConnectionState”之类的东西之前实现的。如果实际存在DTLS级别问题,这可能会导致混淆,因为唯一真正注意的方法是查看本地Chrome日志。

我们绝对计划修复所有的差异。但是一段时间以来,我们因为标准仍然不稳定而搁浅。而现在,我们的首要任务就是实施统一计划SDP和RtpSender/RtpReceiver API。

+0

常识指导如果两个对等点是连接点,它们将具有相同的状态,但似乎发起连接的对等点完成并且对等应答保持连接状态。 – user2288650