两个 WebRTC 对等点同时启动 ICE 重启

Both WebRTC peers initiate ICE restart simultaneously

我对 webRTC 还很陌生。问题与 ICE 重启有关。假设有 2 个使用 webRTC 连接的对等点,其中一个失去连接。现在,对等连接将首先进入 "disconnected" 状态。不久之后,如果仍然没有连接,则进入 "failed" 状态。

现在,我明白一旦达到这种失败状态,我必须执行 ICE 重启。问题是即使一个对等点失去连接,两个对等点都会报告 "failed" 状态并尝试执行 ICE 重启,我认为这应该是有问题的。这是代码片段:

if (peer.localConnection.iceConnectionState == "failed") {
            // create an offer
                peer.localConnection.createOffer({
                    iceRestart : true
                }).then(function(offer) {
                    peer.localConnection.setLocalDescription(offer);
                    // forward the offer to the signaling server
                    var msg = createMsg("OFFER", myId, peerId, offer);
                    sendToSignallingServer(msg);
                }, function(error) {
                    //error
                });
        }

我了解到,在发现现在有两个报价后,其中一个同行应该使用 RTCSessionDescription("rollback") 执行 "rollback"。但是我很困惑这是否有效,因为两个对等方都可能尝试执行回滚。

如何确保只有一个对等方执行回滚?

避免这种情况的一种方法(因为回滚尚未广泛实施)是仅在您的连接端发送初始报价时才进行冰重启。