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

时间:2018-06-08 15:10:46

标签: javascript webrtc p2p sdp

我是webRTC的新手。问题与ICE重启有关。假设有两个使用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”)执行“回滚”。但我很困惑这是否会起作用,因为两个对等体都可能尝试执行回滚。

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

1 个答案:

答案 0 :(得分:1)

避免这种情况的一种方法(因为还没有广泛实现回滚)只是在你的连接端发送了初始报价时才重新启动。