Обе стороны WebRTC инициируют перезапуск ICE одновременно - PullRequest
0 голосов
/ 08 июня 2018

Я довольно новичок в 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 («откат»).Но я не уверен, сработает ли это или нет, поскольку оба пира могут попытаться выполнить откат.

Как я могу убедиться, что откат выполняет только один пир?

1 Ответ

0 голосов
/ 08 июня 2018

Один из способов избежать ситуации (так как откат пока не получил широкого распространения) - это перезапустить лед, только когда ваша сторона соединения отправила первоначальное предложение.

...