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 repräsentiert eine WebRTC-Verbindung zwischen dem lokalen Computer und einem Remote-Peer.
Sie stellt Methoden bereit, um eine Verbindung mit einem Remote-Peer herzustellen, die Verbindung aufrechtzuerhalten und zu überwachen sowie sie zu schließen, 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 repräsentiert.
Instanzeigenschaften
Erbt außerdem Eigenschaften von EventTarget.
canTrickleIceCandidatesSchreibgeschützt-
Gibt einen booleschen Wert zurück, der angibt, ob der Remote-Peer trickle 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 seit dem letzten erfolgreichen Aushandeln und Verbinden dieserRTCPeerConnectionmit einem Remote-Peer zuletzt ausgehandelt wurde. Außerdem ist eine Liste aller ICE-Kandidaten enthalten, die der ICE-Agent möglicherweise bereits generiert hat, seit das durch die Beschreibung repräsentierte 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 seit dem letzten erfolgreichen Aushandeln und Verbinden dieserRTCPeerConnectionmit einem Remote-Peer zuletzt ausgehandelt wurde. Außerdem ist eine Liste aller ICE-Kandidaten enthalten, die der ICE-Agent möglicherweise bereits generiert hat, seit das durch die Beschreibung repräsentierte Angebot oder die Antwort erstmals instanziiert wurde. iceConnectionStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des dieser RTCPeerConnection zugeordneten ICE-Agenten angibt. Er kann einen der folgenden Werte haben:
new,checking,connected,completed,failed,disconnectedoderclosed. iceGatheringStateSchreibgeschützt-
Gibt einen String zurück, der den ICE-Erfassungszustand der Verbindung beschreibt. Damit 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, die die Sitzung für das lokale Ende der Verbindung beschreibt. Wenn 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 so, 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 so, 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. Wenn 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. Wenn SCTP nicht ausgehandelt wurde, ist dieser Wertnull. signalingStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des Signalisierungsprozesses am lokalen Ende der Verbindung während des Verbindens oder erneuten Verbindens 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 entsprechenden privaten Schlüssel und gibt ein
Promisezurück, das nach der Generierung zum neuenRTCCertificateaufgelöst wird.
Instanzmethoden
Erbt außerdem 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 mit der Verbindung verknüpften Transceiver hinzu. Jeder Transceiver repräsentiert einen bidirektionalen Stream, 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 Offer/Answer-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 bereits erfasste ICE-Kandidaten.
createDataChannel()-
Startet die Erstellung eines neuen Kanals, der mit dem Remote-Peer verknüpft ist und über den Daten jeder Art übertragen werden können. Dies kann für Backchannel-Inhalte wie Bilder, Dateiübertragungen, Textchats, Spielaktualisierungspakete und Ähnliches nützlich sein.
createOffer()-
Startet die Erstellung eines SDP-Angebots mit dem Ziel, eine neue WebRTC-Verbindung zu 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 erfassten Kandidaten, um über den Signalisierungskanal an einen potenziellen Peer gesendet zu werden und 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ätsassertion und gibt ein
Promisezurück, das zu einer als String codierten Identitätsassertion 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 repräsentiert. getSenders()-
Gibt ein Array von
RTCRtpSender-Objekten zurück, von denen jedes den RTP-Sender repräsentiert, der für die Übertragung der Daten eines Tracks verantwortlich ist. getStats()-
Gibt ein
Promisezurück, das zu Daten mit Statistiken über entweder die gesamte Verbindung oder den angegebenenMediaStreamTrackaufgelöst wird. 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, das Senden von Medien des angegebenen Tracks zu beenden, ohne den entsprechenden
RTCRtpSendertatsächlich aus der Liste der Sender zu entfernen, wie sie vongetSenders()gemeldet wird. Wenn der Track bereits gestoppt wurde oder sich nicht in der Senderliste der Verbindung befindet, hat diese Methode keine Wirkung. restartIce()-
Ermöglicht es Ihnen, einfach anzufordern, dass die ICE-Kandidatenerfassung 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 auf Grundlage der im angegebenen Objekt enthaltenen Werte fest. Damit können Sie die von der Verbindung verwendeten ICE-Server und die zu verwendenden Transportrichtlinien ändern.
setIdentityProvider()-
Legt den Identity Provider (IdP) auf das durch die Parameter angegebene Tripel fest: seinen Namen, das für die Kommunikation mit ihm verwendete Protokoll und einen Benutzernamen. Das Protokoll und der Benutzername sind optional.
setLocalDescription()-
Ändert die der Verbindung zugeordnete 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 Quelle für Audio oder Video hinzu. Statt diese veraltete Methode zu verwenden, sollten SieaddTrack()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-Telefonsignalisierung über die Verbindung senden kann. removeStream()-
Entfernt einen
MediaStreamals lokale Quelle für Audio oder Video. Da diese Methode veraltet ist, sollten Sie stattdessenremoveTrack()verwenden.
Ereignisse
Überwachen Sie diese Ereignisse mit addEventListener() oder indem Sie der oneventname-Eigenschaft dieser Schnittstelle einen Event-Listener zuweisen.
connectionstatechange-
Wird gesendet, wenn sich der allgemeine Verbindungsstatus der
RTCPeerConnectionändert. datachannel-
Wird gesendet, wenn der Remote-Peer einen
RTCDataChannelzur Verbindung hinzufügt. icecandidate-
Wird gesendet, um anzufordern, dass der angegebene Kandidat an den Remote-Peer übertragen wird.
icecandidateerror-
Wird an die Verbindung gesendet, wenn während der Erfassung von ICE-Kandidaten ein Fehler auftritt. Das Ereignis beschreibt den Fehler.
iceconnectionstatechange-
Wird gesendet, wenn sich der Zustand der ICE-Verbindung ändert, etwa wenn die Verbindung getrennt wird.
icegatheringstatechange-
Wird gesendet, wenn sich der Erfassungszustand der ICE-Schicht, der durch
iceGatheringStatewidergespiegelt wird, ändert. Dies gibt an, ob die ICE-Aushandlung noch nicht begonnen hat (new), mit der Erfassung von Kandidaten begonnen wurde (gathering) oder abgeschlossen ist (complete). negotiationneeded-
Wird gesendet, wenn eine Aushandlung oder erneute Aushandlung der ICE-Verbindung durchgeführt werden muss; dies kann sowohl beim ersten Öffnen einer Verbindung als auch dann auftreten, wenn eine Anpassung an sich ändernde Netzwerkbedingungen erforderlich ist. Der Empfänger sollte darauf reagieren, indem er ein Angebot erstellt und es an den anderen Peer sendet.
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 auf jedem Stream aufremovetrack-Ereignisse warten.
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-Videoaufnahme sowie Peer-to-Peer-Video- und Dateifreigabe (Quellcode auf GitHub)