首页 > 解决方案 > 两个 WebRTC 对等体同时启动 ICE 重启

问题描述

我对 webRTC 相当陌生。该问题与 ICE 重启有关。假设有 2 个对等方使用 webRTC 连接,其中一个失去连接。现在,对等连接将首先进入“断开连接”状态。不久之后,如果仍然没有连接,则进入“失败”状态。

现在,我明白一旦达到这种失败状态,我必须执行 ICE 重启。问题是即使一个对等点失去连接,两个对等点都会报告“失败”状态并尝试执行 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") 执行“回滚”。但是我很困惑这是否会起作用,因为两个对等方都可能尝试执行回滚。

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

标签: javascriptwebrtcp2psdp

解决方案


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


推荐阅读