RTCPeerConnection: signalingState-Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Die schreibgeschützte signalingState-Eigenschaft der RTCPeerConnection-Schnittstelle gibt einen Zeichenfolgenwert zurück, der den Zustand des Signalisierungsprozesses am lokalen Ende der Verbindung während der Verbindung oder Wiederverbindung mit einem anderen Peer beschreibt. Siehe Signaling auf unserer WebRTC-Sitzungslebensdauer-Seite.

Da der Signalisierungsprozess eine Zustandsmaschine ist, kann die Überprüfung, ob Ihr Code sich im erwarteten Zustand befindet, wenn Nachrichten eintreffen, helfen, unerwartete und vermeidbare Fehler zu vermeiden. Wenn Sie beispielsweise eine Antwort erhalten, während der signalingState nicht "have-local-offer" ist, wissen Sie, dass etwas nicht stimmt, da Sie nur Antworten erhalten sollten, nachdem Sie ein Angebot erstellt, aber bevor eine Antwort empfangen und in RTCPeerConnection.setLocalDescription() übergeben wurde. Ihr Code wird zuverlässiger, wenn Sie auf nicht übereinstimmende Zustände achten und diese elegant behandeln.

Dieser Wert kann auch während des Debuggens nützlich sein.

Zusätzlich wird ein signalingstatechange-Ereignis an die RTCPeerConnection-Instanz gesendet, wenn sich der Wert dieser Eigenschaft ändert.

Wert

Die erlaubten Zeichenfolgenwerte sind:

stable

Es gibt keinen laufenden Austausch von Angebot und Antwort. Dies kann bedeuten, dass das RTCPeerConnection-Objekt neu ist, in diesem Fall sind sowohl die localDescription als auch die remoteDescription null; es kann auch bedeuten, dass die Verhandlung abgeschlossen und eine Verbindung hergestellt wurde.

have-local-offer

Der lokale Peer hat RTCPeerConnection.setLocalDescription() aufgerufen und SDP, das ein Angebot darstellt (normalerweise durch Aufrufen von RTCPeerConnection.createOffer() erstellt), übergeben, und das Angebot wurde erfolgreich angewendet.

have-remote-offer

Der Remote-Peer hat ein Angebot erstellt und es über den Signalisierungsserver an den lokalen Peer übermittelt, der das Angebot als Remote-Beschreibung festgelegt hat, indem er RTCPeerConnection.setRemoteDescription() aufgerufen hat.

have-local-pranswer

Das vom Remote-Peer gesendete Angebot wurde angewendet und eine Antwort wurde erstellt (normalerweise durch Aufrufen von RTCPeerConnection.createAnswer()) und durch Aufrufen von RTCPeerConnection.setLocalDescription() angewendet. Diese vorläufige Antwort beschreibt die unterstützten Medienformate und dergleichen, enthält jedoch möglicherweise noch nicht alle ICE-Kandidaten. Weitere Kandidaten werden später separat geliefert.

have-remote-pranswer

Eine vorläufige Antwort wurde empfangen und erfolgreich angewendet als Antwort auf ein zuvor gesendetes und durch Aufrufen von setLocalDescription() etabliertes Angebot.

closed

Die RTCPeerConnection wurde geschlossen.

Beispiele

js
const pc = new RTCPeerConnection(configuration);
const state = pc.signalingState;

Spezifikationen

Specification
WebRTC: Real-Time Communication in Browsers
# dom-peerconnection-signaling-state

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch