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