Когда я могу считать RTCPeerConnection отключенным? - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь определить, когда другая сторона RTCPeerConnection отключилась. В настоящее время я делаю следующее с моим объектом RTCPeerConnection:

rtcPeerConnection.oniceconnectionstatechange = () => {
        const state = rtcPeerConnection.iceConnectionState;

        if (state === "failed" || state === "closed") {
            // connection to the peer is lost and unsalvageable, run cleanup code
        } else if (state === "disconnected") {
            // do nothing in the "disconnected" state as it appears to be a transient 
            // state that can easily return to "connected" - I've seen this with Firefox
        }
    };

Это, кажется, работает в моем ограниченном тестировании с очень простыми условиями сети, но следующее из MDN дает мне паузу, что это вероятно, не собирается задерживаться на производстве:

Конечно, «отключен» и «закрыт» не обязательно указывают на ошибки; это может быть результатом нормального согласования ICE, поэтому убедитесь, что обрабатываете их должным образом (если вообще).

Должен ли я вместо этого использовать RTCPeerConnection.onconnectionstatechange и считать соединение постоянно закрытым, если RTCPeerConnection.connectionState это "closed", "failed" или "disconnected"?

1 Ответ

0 голосов
/ 14 февраля 2020

В спецификации есть очень тщательно продуманный совет по этой теме c:

  Performing an ICE restart is recommended when iceConnectionState transitions to 
  "failed". An application may additionally choose to listen for the 
  iceConnectionState transition to "disconnected" and then use other sources of 
  information (such as using getStats to measure if the number of bytes sent or 
  received over the next couple of seconds increases) to determine whether an ICE 
  restart is advisable.

См. спецификация c и PR, который добавил это

Имейте в виду, что из-за ошибок Chrome в унифицированном плане "нет". «закрыто» может произойти, только если ваш код вызывает p c .close (), поэтому больше не запускается в iceconnectionstatechange с Chrome 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...