RTCPeerConnection: negotiationneeded Ereignis
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
Ein negotiationneeded
Ereignis wird an die RTCPeerConnection
gesendet, wenn eine Verhandlung der Verbindung über den Signalisierungskanal erforderlich ist. Dies tritt sowohl während der Ersteinrichtung der Verbindung als auch jederzeit auf, wenn eine Änderung der Kommunikationsumgebung eine Neukonfiguration der Verbindung erfordert.
Das negotiationneeded
Ereignis wird zuerst an die RTCPeerConnection
gesendet, wenn Medien erstmals zur Verbindung hinzugefügt werden. Dies startet den Prozess der ICE Verhandlung, indem Ihr Code angewiesen wird, ICE-Kandidaten über den Signalisierungsserver auszutauschen. Siehe Signalisierungstransaktionsfluss für eine Beschreibung des Signalisierungsprozesses, der mit einem negotiationneeded
Ereignis beginnt.
Dieses Ereignis kann nicht abgebrochen werden und es wird nicht weitergeleitet.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("negotiationneeded", (event) => { })
onnegotiationneeded = (event) => { }
Ereignistyp
Ein generisches Event
.
Beispiele
In diesem Beispiel verwenden wir addEventListener()
, um einen Ereignis-Handler für negotiationneeded
zu erstellen. Seine Aufgabe ist es, ein SDP Angebot zu erstellen und es über den Signalisierungskanal an den entfernten Teilnehmer zu senden.
pc.addEventListener("negotiationneeded", (ev) => {
pc.createOffer()
.then((offer) => pc.setLocalDescription(offer))
.then(() =>
sendSignalingMessage({
type: "video-offer",
sdp: pc.localDescription,
}),
)
.catch((err) => {
// handle error
});
});
Nachdem das Angebot erstellt wurde, wird das lokale Ende konfiguriert, indem RTCPeerConnection.setLocalDescription()
aufgerufen wird, dann wird eine Signalisierungsnachricht erstellt und über den Signalisierungsserver an den entfernten Teilnehmer gesendet, um dieses Angebot mit dem anderen Teilnehmer zu teilen. Der andere Teilnehmer sollte diese Nachricht erkennen und daraufhin eine eigene RTCPeerConnection
erstellen, die entfernte Beschreibung mit setRemoteDescription()
setzen und dann eine Antwort erstellen, die an den anbietenden Teilnehmer zurückgesendet wird.
Sie können auch einen Ereignis-Handler für das negotiationneeded
Ereignis festlegen, indem Sie die Funktion des Ereignis-Handlers der Eigenschaft onnegotiationneeded
zuweisen:
pc.onnegotiationneeded = (ev) => {
pc.createOffer()
.then((offer) => pc.setLocalDescription(offer))
.then(() =>
sendSignalingMessage({
type: "video-offer",
sdp: pc.localDescription,
}),
)
.catch((err) => {
// handle error
});
};
Für ein detaillierteres Beispiel siehe Verhandlungsbeginn.
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers> # dom-rtcpeerconnection-onnegotiationneeded> |
Browser-Kompatibilität
Loading…