RTCPeerConnection
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.
* Some parts of this feature may have varying levels of support.
Die RTCPeerConnection-Schnittstelle repräsentiert eine WebRTC-Verbindung zwischen dem lokalen Computer und einem entfernten Peer.
Sie bietet Methoden, um sich mit einem entfernten Peer zu verbinden, die Verbindung zu pflegen und zu überwachen sowie die Verbindung 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 entfernten Peer darstellt.
Instanz-Eigenschaften
Erbt auch Eigenschaften von EventTarget.
canTrickleIceCandidatesSchreibgeschützt-
Gibt einen booleschen Wert zurück, der angibt, ob der entfernte Peer trickle ICE candidates akzeptieren kann oder nicht.
connectionStateSchreibgeschützt-
Gibt den aktuellen Zustand der Peer-Verbindung zurück, einer der Strings:
new,connecting,connected,disconnected,failedoderclosed. currentLocalDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das das lokale Ende der Verbindung beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seitdem dieserRTCPeerConnectiondas Verhandeln und Verbinden mit einem entfernten Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die bereits vom ICE-Agenten seit dem ersten Instanziieren des in der Beschreibung dargestellten Angebots oder der Antwort generiert worden sein könnten. currentRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das das entfernte Ende der Verbindung beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seitdem dieserRTCPeerConnectiondas Verhandeln und Verbinden mit einem entfernten Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die bereits vom ICE-Agenten seit dem ersten Instanziieren des in der Beschreibung dargestellten Angebots oder der Antwort generiert worden sein könnten. iceConnectionStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des ICE-Agenten beschreibt, der mit dieser RTCPeer-Verbindung assoziiert ist. Er kann einen der folgenden Werte annehmen:
new,checking,connected,completed,failed,disconnectedoderclosed. iceGatheringStateSchreibgeschützt-
Gibt einen String zurück, der den ICE-Sammelzustand der Verbindung beschreibt. Dies ermöglicht es Ihnen beispielsweise zu erkennen, wann das Sammeln von ICE-Kandidaten abgeschlossen ist. Mögliche Werte sind:
new,gatheringodercomplete. localDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescriptionzurück, das die Sitzung für das lokale Ende der Verbindung beschreibt. Falls es noch nicht festgelegt wurde, wirdnullzurückgegeben. peerIdentitySchreibgeschützt-
Gibt ein
Promisezurück, das aufgelöst wird zu einemRTCIdentityAssertion, das einen String enthält, der den entfernten Peer identifiziert. Sobald dieses Versprechen erfolgreich aufgelöst wird, ist die resultierende Identität die Ziel-Peer-Identität und wird sich für die Dauer der Verbindung nicht ändern. pendingLocalDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine anstehende Konfigurationsänderung für das lokale Ende der Verbindung beschreibt. Dies beschreibt nicht die aktuelle Verbindung, sondern wie sie sich in naher Zukunft darstellen könnte. pendingRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine anstehende Konfigurationsänderung für das entfernte Ende der Verbindung beschreibt. Dies beschreibt nicht die aktuelle Verbindung, sondern wie sie sich in naher Zukunft darstellen könnte. remoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das die Sitzung, einschließlich Konfiguration und Medieninformationen, für das entfernte 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 beschreibt, während ein anderes Peer verbunden oder erneut verbunden wird. Es ist einer 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 seinen entsprechenden privaten Schlüssel und gibt ein
Promisezurück, das auf das neueRTCCertificateaufgelöst wird, sobald es generiert wurde.
Instanz-Methoden
Erbt auch Methoden von EventTarget.
addIceCandidate()-
Fügt einen neuen entfernten Kandidaten zur Remote-Beschreibung der
RTCPeerConnectionhinzu, welche den Zustand des entfernten Verbindungsendes beschreibt. addTrack()-
Fügt einen neuen
MediaStreamTrackzu der Menge von Tracks hinzu, die zum anderen Peer übertragen werden sollen. addTransceiver()-
Erstellt einen neuen
RTCRtpTransceiverund fügt ihn zur Menge der mit der Verbindung assoziierten Transceiver hinzu. Jeder Transceiver repräsentiert einen bidirektionalen Stream, mit einemRTCRtpSenderund einemRTCRtpReceiver, die damit assoziiert sind. close()-
Schließt die aktuelle Peer-Verbindung.
createAnswer()-
Initiiert die Erstellung einer 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 alle Medien, die bereits an die Sitzung angehängt wurden, Codecs und Optionen, die vom Browser unterstützt werden, sowie alle bereits gesammelten ICE-Kandidaten.
createDataChannel()-
Initiiert die Erstellung eines neuen Kanals, der mit dem entfernten Peer verbunden ist und über den alle Arten von Daten übertragen werden können. Dies kann nützlich sein für Back-Channel-Inhalte, wie Bilder, Dateitransfers, Textchats, Spiel-Aktualisierungspakete und so weiter.
createOffer()-
Initiiert die Erstellung eines SDP-Angebots, um eine neue WebRTC-Verbindung zu einem entfernten Peer zu starten. Das SDP-Angebot enthält Informationen über alle
MediaStreamTrack-Objekte, die bereits an die WebRTC-Sitzung angehängt sind, Codec und Optionen, die vom Browser unterstützt werden, sowie alle bereits gesammelten Kandidaten durch den ICE-Agenten, um sie über den Signalisierungskanal an einen potentiellen Peer zu senden, um entweder eine Verbindung anzufordern oder die Konfiguration einer bestehenden Verbindung zu aktualisieren. getConfiguration()-
Gibt ein Objekt zurück, das die aktuelle Konfiguration der Verbindung anzeigt.
getIdentityAssertion()-
Initiiert das Sammeln einer Identitätsaussage und gibt ein
Promisezurück, das auf eine als String codierte Identitätsaussage aufgelöst wird. Dies hat nur einen Effekt, 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 Datenübertragung eines Tracks verantwortlich ist. getStats()-
Gibt ein
Promisezurück, das mit Daten aufgelöst wird, die Statistikinformationen über entweder die gesamte Verbindung oder über den angegebenenMediaStreamTrackliefern. getTransceivers()-
Gibt eine Liste aller
RTCRtpTransceiver-Objekte zurück, die zum Senden und Empfangen von Daten auf der Verbindung verwendet werden. removeTrack()-
Weist das lokale Ende der Verbindung an, das Senden von Medien des angegebenen Tracks zu stoppen, ohne den entsprechenden
RTCRtpSenderaus der Liste der Sender zu entfernen, wie sie vongetSenders()angegeben wird. Wenn der Track bereits gestoppt ist oder sich nicht in der Senderliste der Verbindung befindet, hat diese Methode keinen Effekt. restartIce()-
Ermöglicht eine einfache Anforderung, dass das Sammeln von ICE-Kandidaten an beiden Enden der Verbindung erneut durchgeführt wird. Dies vereinfacht den Prozess, indem die gleiche Methode verwendet wird, entweder vom Anrufer oder vom Empfänger, um einen ICE-Neustart auszulösen.
setConfiguration()-
Legt die aktuelle Konfiguration der Verbindung basierend auf den in dem angegebenen Objekt enthaltenen Werten fest. Dies ermöglicht es Ihnen, die von der Verbindung verwendeten ICE-Server und welche Transportpolitiken verwendet werden sollen, zu ändern.
setIdentityProvider()-
Setzt den Identity Provider (IdP) auf das im Parameter angegebene Triplet: seinen Namen, das Protokoll, das verwendet wird, um mit ihm zu kommunizieren und einen Benutzernamen. Das Protokoll und der Benutzername sind optional.
setLocalDescription()-
Ändert die mit der Verbindung verknüpfte lokale Beschreibung. Diese Beschreibung gibt die Eigenschaften des lokalen Endes der Verbindung an, einschließlich des Medienformats. Es gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung asynchron geändert wurde. setRemoteDescription()-
Setzt die angegebene Sitzungsbeschreibung als aktuelles Angebot oder Antwort des entfernten Peers. Die Beschreibung spezifiziert die Eigenschaften des entfernten Endes der Verbindung, einschließlich des Medienformats. Es gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung asynchron geändert wurde.
Veraltete Methoden
addStream()Veraltet Nicht standardisiert-
Fügt einen
MediaStreamals lokale Audio- oder Videoquelle hinzu. Anstatt diese veraltete Methode zu verwenden, sollten Sie stattdessenaddTrack()für jeden Track verwenden, den Sie an den entfernten Peer senden möchten. createDTMFSender()Veraltet Nicht standardisiert-
Erstellt einen neuen
RTCDTMFSender, der mit einem bestimmtenMediaStreamTrackassoziiert ist und DTMF-Telefonsignalisierung über die Verbindung senden kann. removeStream()Veraltet Nicht standardisiert-
Entfernt einen
MediaStreamals lokale Audio- oder Videoquelle. Weil diese Methode veraltet ist, sollten Sie stattdessenremoveTrack()verwenden.
Ereignisse
Hören Sie diese Ereignisse mit addEventListener() oder indem Sie einen Ereignis-Listener der Eigenschaft oneventname dieser Schnittstelle zuweisen.
connectionstatechange-
Wird gesendet, wenn sich der allgemeine Verbindungsstatus der
RTCPeerConnectionändert. datachannel-
Wird gesendet, wenn der entfernte Peer einen
RTCDataChannelzur Verbindung hinzufügt. icecandidate-
Wird gesendet, um anzufordern, dass der angegebene Kandidat an den entfernten Peer übertragen wird.
icecandidateerror-
Wird an die Verbindung gesendet, wenn während des Sammelns von ICE-Kandidaten ein Fehler auftritt. Das Ereignis beschreibt den Fehler.
iceconnectionstatechange-
Wird gesendet, wenn sich der Zustand der ICE-Verbindung verändert, beispielsweise wenn sie getrennt wird.
icegatheringstatechange-
Wird gesendet, wenn sich der Sammelzustand der ICE-Schicht, dargestellt durch
iceGatheringState, ändert. Dies zeigt an, ob die ICE-Verhandlung noch nicht begonnen hat (new), begonnen hat, Kandidaten zu sammeln (gathering), oder abgeschlossen ist (complete). negotiationneeded-
Wird gesendet, wenn die Verhandlung oder Neuverhandlung der ICE-Verbindung durchgeführt werden muss; Dies kann sowohl beim ersten Öffnen einer Verbindung passieren, als auch wenn es notwendig ist, sich an sich ändernde Netzwerkbedingungen anzupassen. Der Empfänger sollte reagieren, indem er ein Angebot erstellt und es an den anderen Peer sendet.
signalingstatechange-
Wird gesendet, wenn sich der Signalisierungszustand der ICE-Verbindung ändert.
track-
Wird gesendet, nachdem ein neuer Track zu einer der
RTCRtpReceiver-Instanzen hinzugefügt wurde, die die Verbindung bilden.
Veraltete Ereignisse
addstreamVeraltet Nicht standardisiert-
Wird gesendet, wenn ein neuer
MediaStreamzur Verbindung hinzugefügt wird. Anstatt auf dieses veraltete Ereignis zu hören, sollten Sie auftrack-Ereignisse hören; eines wird für jedenMediaStreamTrackgesendet, der der Verbindung hinzugefügt wird. removestreamVeraltet Nicht standardisiert-
Wird gesendet, wenn ein
MediaStreamaus der Verbindung entfernt wird. Anstatt auf dieses veraltete Ereignis zu hören, sollten Sie aufremovetrack-Ereignisse auf jedem Stream hören.
Spezifikationen
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # interface-definition> |
Browser-Kompatibilität
Loading…
Siehe auch
- https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
- Erste Schritte mit WebRTC
- TutorRoom: Node.js HTML-Videoaufzeichnung, Peer-to-Peer-Video- und Dateifreigabeanwendung (Quellcode auf GitHub)