RTCPeerConnection: Methode createAnswer()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2017 browserübergreifend verfügbar.
Die Methode createAnswer() des Interfaces RTCPeerConnection erstellt eine SDP-Antwort auf ein Angebot, das während der Angebot/Antwort-Aushandlung einer WebRTC-Verbindung von einem entfernten Peer empfangen wurde.
Die Antwort enthält Informationen über alle Medien, die bereits in die Sitzung eingebunden sind, über die vom Browser unterstützten Codecs und Optionen sowie über alle bereits gesammelten ICE-Kandidaten.
Die Antwort wird über das zurückgegebene Promise bereitgestellt und sollte anschließend an den Absender des Angebots gesendet werden, um die Aushandlung fortzusetzen.
Syntax
createAnswer()
createAnswer(options)
createAnswer(successCallback, failureCallback) // deprecated
createAnswer(successCallback, failureCallback, options) // deprecated
Parameter
optionsOptional-
Ein optionales Objekt mit den für die Antwort angeforderten Optionen. Derzeit sind keine Optionen verfügbar.
Veraltete Parameter
In älterem Code und älterer Dokumentation finden Sie möglicherweise eine Callback-basierte Version dieser Funktion.
Diese ist veraltet, und von ihrer Verwendung wird dringend abgeraten.
Sie sollten vorhandenen Code stattdessen auf die Promise-basierte Version von createAnswer() umstellen.
Die Parameter der älteren Form von createAnswer() werden im Folgenden beschrieben, um die Aktualisierung vorhandenen Codes zu erleichtern.
successCallback-
Eine Callback-Funktion, der ein einzelnes
RTCSessionDescription-Objekt übergeben wird, das die neu erstellte Antwort beschreibt. failureCallback-
Eine Callback-Funktion, der ein einzelnes
DOMException-Objekt übergeben wird, das erklärt, warum die Erstellung einer Antwort fehlgeschlagen ist. optionsOptional-
Ein optionales Objekt mit den für die Antwort angeforderten Optionen.
Ausnahmen
NotReadableErrorDOMException-
Der Identitätsanbieter konnte keine Identitätsbestätigung bereitstellen.
OperationErrorDOMException-
Die Generierung des SDP ist aus irgendeinem Grund fehlgeschlagen; dies ist eine allgemeine Ausnahme für nicht näher spezifizierte Fehler.
Rückgabewert
Ein Promise, das mit einem Objekt erfüllt wird, das dieselben Eigenschaften wie ein RTCSessionDescription-Objekt enthält:
Beispiele
Hier sehen Sie einen Codeausschnitt aus dem Code zum Artikel Signalisierung und Videoanrufe. Der Ausschnitt stammt aus dem Handler für die Nachricht, mit der ein Angebot über den Signalisierungskanal an einen anderen Peer gesendet wird.
Hinweis:
Beachten Sie, dass dies Teil des Signalisierungsprozesses ist und die dafür verwendete Transportschicht ein Implementierungsdetail ist, das Sie selbst festlegen.
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 Nachricht enthält die Antwort für das Gerät, das das Verbindungsangebot gesendet hat.
Der Inhalt des an die Funktion sendToServer() übergebenen Objekts hängt ebenso wie alles andere im Handler für die Erfüllung des Promise vollständig von Ihrer Implementierung ab.
pc.createAnswer()
.then((answer) => pc.setLocalDescription(answer))
.then(() => {
// Send the answer to the remote peer through the signaling server.
})
.catch(handleGetUserMediaError);
Damit wird RTCPeerConnection aufgefordert, eine neue Antwort zu erstellen und zurückzugeben.
In unserem Promise-Handler wird die zurückgegebene Antwort durch Aufrufen von setLocalDescription() als Beschreibung der lokalen Seite der Verbindung festgelegt.
Wenn dies erfolgreich ist, wird die Antwort über ein Protokoll Ihrer Wahl an den Signalisierungsserver gesendet.
Mit Promise.catch() werden Fehler abgefangen und behandelt.
Unter Verarbeiten der Einladung in unserem WebRTC-Chat-Beispiel finden Sie den vollständigen Code, aus dem dieser Ausschnitt stammt. Er hilft Ihnen, den Signalisierungsprozess und die Funktionsweise von Antworten zu verstehen.
Spezifikationen
| Spezifikation |
|---|
| WebRTC: Real-Time Communication in Browsers> # dom-rtcpeerconnection-createanswer> |