RTCPeerConnection: createAnswer() Methode
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 createAnswer()
-Methode der RTCPeerConnection
Schnittstelle erstellt eine SDP-Antwort auf ein Angebot, das von einem entfernten Peer während der Angebot/Antwort-Verhandlung einer WebRTC-Verbindung empfangen wurde.
Die Antwort enthält Informationen über bereits an die Sitzung angehängte Medien, von dem Browser unterstützte Codecs und Optionen sowie bereits gesammelte ICE-Kandidaten. Die Antwort wird an das zurückgegebene Promise
geliefert und sollte dann an die Quelle des Angebots gesendet werden, um den Verhandlungsprozess fortzusetzen.
Syntax
createAnswer()
createAnswer(options)
createAnswer(successCallback, failureCallback) // deprecated
createAnswer(successCallback, failureCallback, options) // deprecated
Parameter
options
Optional-
Ein optionales Objekt, das angeforderte Optionen für die Antwort bereitstellt. Derzeit sind keine Optionen verfügbar.
Veraltete Parameter
In älterem Code und Dokumentationen kann eine callback-basierte Version dieser Funktion auftreten. Diese wurde veraltet und ihre Verwendung wird dringend abgeraten. Sie sollten vorhandenen Code aktualisieren, um die Promise
-basierte Version von createAnswer()
zu verwenden. Die Parameter der älteren Form von createAnswer()
werden nachstehend beschrieben, um die Aktualisierung vorhandenen Codes zu erleichtern.
successCallback
Veraltet-
Eine Callback-Funktion, die ein einzelnes
RTCSessionDescription
-Objekt erhält, das die neu erstellte Antwort beschreibt. failureCallback
Veraltet-
Eine Callback-Funktion, die ein einzelnes
DOMException
-Objekt erhält, das erklärt, warum die Anforderung, eine Antwort zu erstellen, fehlgeschlagen ist. options
Optional-
Ein optionales Objekt, das angeforderte Optionen für die Antwort bereitstellt.
Ausnahmen
NotReadableError
-
Der Identitätsanbieter war nicht in der Lage, eine Identitätsbehauptung bereitzustellen.
OperationError
-
Die Erstellung der SDP ist aus irgendeinem Grund fehlgeschlagen; dies ist eine allgemeine Fehlerausnahme.
Rückgabewert
Ein Promise
, das ein Objekt mit den gleichen Eigenschaften wie ein RTCSessionDescription
-Objekten erfüllt:
Beispiele
Hier ist ein Code-Segment aus dem Artikel Signalisierung und Videoanruf. Dieser Code stammt aus dem Handler für die Nachricht, die ein Angebot über den Signalisierungskanal an einen anderen Peer sendet.
Hinweis:
Beachten Sie, dass dies Teil des Signalisierungsprozesses ist, dessen Transportschicht ein Implementierungsdetail ist, das vollständig Ihnen überlassen bleibt. In diesem Fall wird eine WebSocket-Verbindung verwendet, um eine JSON-Nachricht mit einem type
-Feld mit dem Wert "video-answer" an den anderen Peer zu senden, die die Antwort an das Gerät trägt, das das Verbindungsangebot gesendet hat. Der Inhalt des Objekts, das an die sendToServer()
-Funktion übergeben wird, sowie alles andere im Promise-Erfüllungs-Handler hängen vollständig von Ihrem Design ab.
pc.createAnswer()
.then((answer) => pc.setLocalDescription(answer))
.then(() => {
// Send the answer to the remote peer through the signaling server.
})
.catch(handleGetUserMediaError);
Dies fordert RTCPeerConnection
auf, eine neue Antwort zu erstellen und zurückzugeben. In unserem Promise-Handler wird die zurückgegebene Antwort als Beschreibung des lokalen Endes der Verbindung durch Aufrufen von setLocalDescription()
gesetzt.
Sobald dies erfolgreich ist, wird die Antwort unter Verwendung des von Ihnen gewählten Protokolls an den Signalisierungsserver gesendet.
Promise.catch()
wird verwendet, um Fehler abzufangen und zu behandeln.
Siehe Handling the invitation in unserem WebRTC-Chat-Beispiel, um den vollständigen Code zu sehen, von dem dieses Snippet abgeleitet ist; das wird Ihnen helfen, den Signalisierungsprozess und die Funktionsweise von Antworten zu verstehen.
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers # dom-rtcpeerconnection-createanswer |
Browser-Kompatibilität
BCD tables only load in the browser