RTCPeerConnection
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.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Die Schnittstelle RTCPeerConnection stellt eine WebRTC-Verbindung zwischen dem lokalen Computer und einem Remote-Peer dar.
Sie bietet Methoden zum Herstellen einer Verbindung mit einem Remote-Peer, zum Aufrechterhalten und Überwachen der Verbindung sowie zum Schließen der Verbindung, wenn sie nicht mehr benötigt wird.
Konstruktor
RTCPeerConnection()-
Gibt eine neue
RTCPeerConnectionzurück, die eine Verbindung zwischen dem lokalen Gerät und einem Remote-Peer darstellt.
Instanzeigenschaften
Erbt auch Eigenschaften von EventTarget.
canTrickleIceCandidatesSchreibgeschützt-
Gibt einen booleschen Wert zurück, der angibt, ob der Remote-Peer trickled ICE candidates akzeptieren kann.
connectionStateSchreibgeschützt-
Gibt den aktuellen Zustand der Peer-Verbindung an, indem einer der folgenden Strings zurückgegeben wird:
new,connecting,connected,disconnected,failedoderclosed. currentLocalDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das das lokale Ende der Verbindung so beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seit dieseRTCPeerConnectionzuletzt die Aushandlung und Verbindung mit einem Remote-Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die der ICE-Agent möglicherweise bereits generiert hat, seit das durch die Beschreibung dargestellte Angebot oder die Antwort erstmals instanziiert wurde. currentRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das das Remote-Ende der Verbindung so beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seit dieseRTCPeerConnectionzuletzt die Aushandlung und Verbindung mit einem Remote-Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die der ICE-Agent möglicherweise bereits generiert hat, seit das durch die Beschreibung dargestellte Angebot oder die Antwort erstmals instanziiert wurde. iceConnectionStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des dieser RTCPeerConnection zugeordneten ICE-Agenten beschreibt. Er kann einen der folgenden Werte haben:
new,checking,connected,completed,failed,disconnectedoderclosed. iceGatheringStateSchreibgeschützt-
Gibt einen String zurück, der den ICE-Sammlungszustand der Verbindung beschreibt. Dadurch können Sie beispielsweise erkennen, wann die Sammlung von ICE-Kandidaten abgeschlossen ist. Mögliche Werte sind:
new,gatheringodercomplete. idpLoginUrlSchreibgeschützt-
Gibt einen String zurück, der den Endpunkt enthält, zu dem die Anwendung navigieren kann, um Benutzer beim Identitätsanbieter (IdP) anzumelden. Kann
nullsein, wenn keine Anmeldung erforderlich ist. localDescriptionSchreibgeschützt-
Gibt eine
RTCSessionDescriptionzurück, welche die Sitzung für das lokale Ende der Verbindung beschreibt. Falls sie noch nicht festgelegt wurde, wirdnullzurückgegeben. peerIdentitySchreibgeschützt-
Gibt ein
Promisezurück, das zu einerRTCIdentityAssertionaufgelöst wird, die einen String zur Identifizierung des Remote-Peers enthält. Sobald dieses Promise erfolgreich aufgelöst wurde, ist die resultierende Identität die Ziel-Peer-Identität und ändert sich für die Dauer der Verbindung nicht. pendingLocalDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine ausstehende Konfigurationsänderung für das lokale Ende der Verbindung beschreibt. Dies beschreibt nicht die Verbindung in ihrem aktuellen Zustand, sondern wie sie in naher Zukunft bestehen könnte. pendingRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine ausstehende Konfigurationsänderung für das Remote-Ende der Verbindung beschreibt. Dies beschreibt nicht die Verbindung in ihrem aktuellen Zustand, sondern wie sie in naher Zukunft bestehen könnte. remoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das die Sitzung einschließlich Konfigurations- und Medieninformationen für das Remote-Ende der Verbindung beschreibt. Falls dies noch nicht festgelegt wurde, wirdnullzurückgegeben. sctpSchreibgeschützt-
Gibt ein
RTCSctpTransport-Objekt zurück, das die SCTP-Transportschicht beschreibt, über die SCTP-Daten gesendet und empfangen werden. Falls SCTP nicht ausgehandelt wurde, ist dieser Wertnull. signalingStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des Signalisierungsprozesses am lokalen Ende der Verbindung beim Verbinden oder erneuten Verbinden mit einem anderen Peer beschreibt. Er hat einen der folgenden Werte:
stable,have-local-offer,have-remote-offer,have-local-pranswer,have-remote-pransweroderclosed.
Statische Methoden
RTCPeerConnection.generateCertificate()-
Erstellt ein X.509-Zertifikat und den zugehörigen privaten Schlüssel und gibt ein
Promisezurück, das nach dessen Generierung mit dem neuenRTCCertificateaufgelöst wird.
Instanzmethoden
Erbt auch Methoden von EventTarget.
addIceCandidate()-
Fügt der Remote-Beschreibung der
RTCPeerConnection, die den Zustand des Remote-Endes der Verbindung beschreibt, einen neuen Remote-Kandidaten hinzu. addTrack()-
Fügt der Menge der Tracks, die an den anderen Peer übertragen werden, einen neuen
MediaStreamTrackhinzu. addTransceiver()-
Erstellt einen neuen
RTCRtpTransceiverund fügt ihn der Menge der der Verbindung zugeordneten Transceiver hinzu. Jeder Transceiver stellt einen bidirektionalen Stream dar, dem sowohl einRTCRtpSenderals auch einRTCRtpReceiverzugeordnet sind. close()-
Schließt die aktuelle Peer-Verbindung.
createAnswer()-
Startet die Erstellung einer SDP-Antwort auf ein Angebot, das während der Angebot/Antwort-Aushandlung einer WebRTC-Verbindung von einem Remote-Peer empfangen wurde. Die Antwort enthält Informationen über alle bereits an die Sitzung angehängten Medien, vom Browser unterstützte Codecs und Optionen sowie alle bereits gesammelten ICE-Kandidaten.
createDataChannel()-
Startet die Erstellung eines neuen Kanals, der mit dem Remote-Peer verknüpft ist und über den beliebige Arten von Daten übertragen werden können. Dies kann für Backchannel-Inhalte wie Bilder, Dateiübertragungen, Textchats, Spielaktualisierungspakete usw. nützlich sein.
createOffer()-
Startet die Erstellung eines SDP-Angebots, um eine neue WebRTC-Verbindung mit einem Remote-Peer zu beginnen. Das SDP-Angebot enthält Informationen über alle bereits an die WebRTC-Sitzung angehängten
MediaStreamTrack-Objekte, vom Browser unterstützte Codecs und Optionen sowie alle bereits vom ICE-Agenten gesammelten Kandidaten, damit es über den Signalisierungskanal an einen potenziellen Peer gesendet wird, um eine Verbindung anzufordern oder die Konfiguration einer bestehenden Verbindung zu aktualisieren. getConfiguration()-
Gibt ein Objekt zurück, das die aktuelle Konfiguration der Verbindung angibt.
getIdentityAssertion()-
Startet die Erfassung einer Identitätsbehauptung und gibt ein
Promisezurück, das zu einer als String codierten Identitätsbehauptung aufgelöst wird. Dies hat nur eine Wirkung, wennsignalingStatenichtclosedist. getReceivers()-
Gibt ein Array von
RTCRtpReceiver-Objekten zurück, von denen jedes einen RTP-Empfänger darstellt. getSenders()-
Gibt ein Array von
RTCRtpSender-Objekten zurück, von denen jedes den RTP-Sender darstellt, der für die Übertragung der Daten eines Tracks verantwortlich ist. getStats()-
Gibt ein
Promisezurück, das mit Daten aufgelöst wird, die Statistiken entweder über die gesamte Verbindung oder über den angegebenenMediaStreamTrackbereitstellen. getTransceivers()-
Gibt eine Liste aller
RTCRtpTransceiver-Objekte zurück, die zum Senden und Empfangen von Daten über die Verbindung verwendet werden. removeTrack()-
Weist das lokale Ende der Verbindung an, keine Medien vom angegebenen Track mehr zu senden, ohne den entsprechenden
RTCRtpSendertatsächlich aus der vongetSenders()gemeldeten Liste der Sender zu entfernen. Falls der Track bereits gestoppt wurde oder nicht in der Senderliste der Verbindung enthalten ist, hat diese Methode keine Wirkung. restartIce()-
Ermöglicht es Ihnen, einfach anzufordern, dass die Sammlung von ICE-Kandidaten an beiden Enden der Verbindung erneut durchgeführt wird. Dies vereinfacht den Prozess, da sowohl der Aufrufer als auch der Empfänger dieselbe Methode verwenden können, um einen ICE-Neustart auszulösen.
setConfiguration()-
Legt die aktuelle Konfiguration der Verbindung anhand der im angegebenen Objekt enthaltenen Werte fest. Dadurch können Sie die von der Verbindung verwendeten ICE-Server und die zu verwendenden Transportrichtlinien ändern.
setIdentityProvider()-
Legt den Identity Provider (IdP) auf das im Parameter angegebene Tripel fest: seinen Namen, das zur Kommunikation mit ihm verwendete Protokoll und einen Benutzernamen. Das Protokoll und der Benutzername sind optional.
setLocalDescription()-
Ändert die mit der Verbindung verknüpfte lokale Beschreibung. Diese Beschreibung legt die Eigenschaften des lokalen Endes der Verbindung fest, einschließlich des Medienformats. Sie gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung asynchron geändert wurde. setRemoteDescription()-
Legt die angegebene Sitzungsbeschreibung als aktuelles Angebot oder aktuelle Antwort des Remote-Peers fest. Die Beschreibung legt die Eigenschaften des Remote-Endes der Verbindung fest, einschließlich des Medienformats. Sie gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung asynchron geändert wurde.
Veraltete Methoden
addStream()-
Fügt einen
MediaStreamals lokale Audio- oder Videoquelle hinzu. Statt diese veraltete Methode zu verwenden, sollten SieaddTrack()jeweils einmal für jeden Track verwenden, den Sie an den Remote-Peer senden möchten. createDTMFSender()-
Erstellt einen neuen
RTCDTMFSender, der einem bestimmtenMediaStreamTrackzugeordnet ist und DTMF-Telefoniesignalisierung über die Verbindung senden kann. removeStream()-
Entfernt einen
MediaStreamals lokale Audio- oder Videoquelle. Da diese Methode veraltet ist, sollten Sie stattdessenremoveTrack()verwenden.
Ereignisse
Sie können diese Ereignisse mit addEventListener() überwachen oder indem Sie der oneventname-Eigenschaft dieser Schnittstelle einen Ereignis-Listener zuweisen.
connectionstatechange-
Wird gesendet, wenn sich der allgemeine Verbindungsstatus der
RTCPeerConnectionändert. datachannel-
Wird gesendet, wenn der Remote-Peer der Verbindung einen
RTCDataChannelhinzufügt. icecandidate-
Wird gesendet, um anzufordern, dass der angegebene Kandidat an den Remote-Peer übertragen wird.
icecandidateerror-
Wird an die Verbindung gesendet, falls während der Sammlung von ICE-Kandidaten ein Fehler auftritt. Das Ereignis beschreibt den Fehler.
iceconnectionstatechange-
Wird gesendet, wenn sich der Zustand der ICE-Verbindung ändert, etwa wenn sie getrennt wird.
icegatheringstatechange-
Wird gesendet, wenn sich der durch
iceGatheringStatewiedergegebene Sammlungszustand der ICE-Schicht ändert. Dies gibt an, ob die ICE-Aushandlung noch nicht begonnen hat (new), mit der Sammlung von Kandidaten begonnen wurde (gathering) oder abgeschlossen ist (complete). negotiationneeded-
Wird gesendet, wenn die Aushandlung oder erneute Aushandlung der ICE-Verbindung durchgeführt werden muss; dies kann sowohl beim erstmaligen Öffnen einer Verbindung als auch dann geschehen, wenn eine Anpassung an veränderte Netzwerkbedingungen erforderlich ist. Der Empfänger sollte mit der Erstellung eines Angebots und dessen Versand an den anderen Peer reagieren.
signalingstatechange-
Wird gesendet, wenn sich der ICE-Signalisierungszustand der Verbindung ändert.
track-
Wird gesendet, nachdem ein neuer Track zu einer der
RTCRtpReceiver-Instanzen hinzugefügt wurde, aus denen die Verbindung besteht.
Veraltete Ereignisse
addstream-
Wird gesendet, wenn ein neuer
MediaStreamzur Verbindung hinzugefügt wurde. Statt auf dieses veraltete Ereignis zu warten, sollten Sie auftrack-Ereignisse warten; für jeden zur Verbindung hinzugefügtenMediaStreamTrackwird eines gesendet. removestream-
Wird gesendet, wenn ein
MediaStreamaus der Verbindung entfernt wird. Statt auf dieses veraltete Ereignis zu warten, sollten Sie aufremovetrack-Ereignisse für jeden Stream warten.
Beispiele
Beispielcode finden Sie unter WebRTC samples > RTCPeerConnection.
Spezifikationen
| Spezifikation |
|---|
| WebRTC: Real-Time Communication in Browsers> # interface-definition> |
Browser-Kompatibilität
Siehe auch
- https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
- Erste Schritte mit WebRTC
- TutorRoom: Node.js-Anwendung für HTML-Videoerfassung, Peer-to-Peer-Video- und Dateifreigabe (Quellcode auf GitHub)