Я пытаюсь определить, когда другая сторона 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"
?