ICE 连接状态失败指示与对等连接状态在连接故障转移期间失败

时间:2021-03-01 11:39:46

标签: google-chrome webrtc failover rtcpeerconnection ice-protocol

我正在移动设备上测试从 WiFi 连接到蜂窝连接的连接故障转移,并且对是否应该同时接收 ICE 连接失败通知 (oniceconnectionstatechange) 和对等连接状态失败 (onconnectionstatechange) 有疑问。< /p>

我的设置是使用 Chrome (88.0.4324.182) 通过 websocket 连接到我们的会话服务器。我开始并在两方(一个是移动设备)之间建立了稳定的视频连接,并且我停用了移动设备上的 WiFi。 websocket 按预期断开连接(在移动设备上),并在通过蜂窝网络重新连接后不久(大约 4 秒)。

大约 1 秒后,ICE 状态(在移动设备上)变为断开连接并收到 StateChange 通知(oniceconnectionstatechange disconnected)。

我们在此时启动一个本地 30 秒监督计时器来监控整体处理并在超时时执行清理。

ICE 状态(在移动设备上)变为“断开连接”几毫秒后,对等连接状态也变为“断开连接”,如状态更改处理程序 (onconnectionstatechange) 所通知的那样。

大约 10 秒后,状态更改处理程序 (onconnectionstatechange) 指示对等连接状态变为“失败”。

直到总监督计时器在 30 秒后到期,我们释放所有资源并清除与会话服务器的连接之前,不会再发生任何事情。

(另请注意,呼叫的另一端可能已重置并且不再尝试连接 - 但是,IMO,这应该不会对本地 ICE 处理产生任何影响。)

我的问题是除了 RTC connectionState failed 之外是否还生成了 ICE state failed 或者 RTC connection state failed 是失败状态的唯一指示。

如果我的解释是正确的(如果不是,请道歉并感谢您的澄清),似乎应该按照规范 (https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/connectionState) 接收 ICE 状态失败,RTC 状态表明一个或多个 ICE 传输已失败,而 ICE 状态失败表明 (https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceConnectionState) 不存在可行的 ICE 连接。

来自测试的后续说明 - 在 RTC connectionState 变为“failed”时,iceConnectionState 仍然“disconnected”并且没有变为“failed”。问题是,如果在 ICE 连接状态上执行的任何 iceRestart 失败(例如,如 https://github.com/w3c/webrtc-pc/issues/2167 的示例和讨论中所见),则无法执行重新启动,因为 iceconnectionstate 还没有消失'失败'。

此外,经过进一步审查,这似乎很可能与 The implementation of webrtc peerconnection state is inconsistent with the standard

谢谢

0 个答案:

没有答案