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