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 RTCPeerConnection-Schnittstelle repräsentiert eine WebRTC-Verbindung zwischen dem lokalen Computer und einem entfernten Peer.
Sie bietet Methoden zum Verbinden mit einem entfernten Peer, zum Aufrechterhalten und Überwachen der Verbindung sowie zum Schließen der Verbindung, sobald diese nicht mehr benötigt wird.
Konstruktor
RTCPeerConnection()-
Gibt ein neues
RTCPeerConnectionzurück, das 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 anzeigt, ob der entfernte Peer Trickled ICE-Kandidaten akzeptieren kann.
connectionStateSchreibgeschützt-
Gibt den aktuellen Status der Peer-Verbindung zurück, 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 beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seit dieseRTCPeerConnectionzuletzt mit dem Aushandeln und Verbinden mit einem entfernten Peer fertig war. Dazu gehört auch eine Liste aller ICE-Kandidaten, 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 entfernte Ende der Verbindung beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde, seit dieseRTCPeerConnectionzuletzt mit dem Aushandeln und Verbinden mit einem entfernten Peer fertig war. Dazu gehört auch eine Liste aller ICE-Kandidaten, 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 Status des ICE-Agents beschreibt, der mit dieser RTCPeerConnection assoziiert ist. Es kann einer der folgenden Werte sein:
new,checking,connected,completed,failed,disconnected, oderclosed. iceGatheringStateSchreibgeschützt-
Gibt einen String zurück, der den ICE-Gathering-Status der Verbindung beschreibt. Dies ermöglicht es Ihnen zu erkennen, z.B. 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. Falls sie noch nicht gesetzt wurde, wirdnullzurückgegeben. peerIdentitySchreibgeschützt-
Gibt ein
Promisezurück, das zu einerRTCIdentityAssertionaufgelöst wird, die einen String enthält, der den entfernten Peer identifiziert. Sobald dieses Promise 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 ausstehende Konfigurationsänderung für das lokale Ende der Verbindung beschreibt. Dies beschreibt nicht die aktuelle Verbindung, sondern wie sie in naher Zukunft möglicherweise aussehen könnte. pendingRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine ausstehende Konfigurationsänderung für das entfernte Ende der Verbindung beschreibt. Dies beschreibt nicht die aktuelle Verbindung, sondern wie sie in naher Zukunft möglicherweise aussehen 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 gesetzt 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 Wiederverbinden mit einem anderen Peer beschreibt. Er ist einer der folgenden Werte:
stable,have-local-offer,have-remote-offer,have-local-pranswer,have-remote-pranswer, oderclosed.
Statische Methoden
RTCPeerConnection.generateCertificate()-
Erstellt ein X.509-Zertifikat und den zugehörigen privaten Schlüssel, wobei ein
Promisezurückgeben wird, das mit dem neuenRTCCertificateaufgelöst wird, sobald es generiert ist.
Instanzmethoden
Erbt auch Methoden von EventTarget.
addIceCandidate()-
Fügt der Remote-Beschreibung der
RTCPeerConnectioneinen neuen Remote-Kandidaten hinzu, der den Zustand des entfernten Endes der Verbindung beschreibt. addTrack()-
Fügt einen neuen
MediaStreamTrackzu der Menge von Tracks hinzu, die an den anderen Peer übertragen werden. addTransceiver()-
Erstellt einen neuen
RTCRtpTransceiverund fügt ihn der Menge von Transceivern hinzu, die mit der Verbindung assoziiert sind. Jeder Transceiver repräsentiert einen bidirektionalen Stream, dem sowohl einRTCRtpSenderals auch einRTCRtpReceiverzugeordnet sind. close()-
Schliesst die aktuelle Peer-Verbindung.
createAnswer()-
Initiates die Erstellung einer SDP-Antwort auf ein von einem entfernten Peer empfangenes Angebot während der Angebot/Antwort-Verhandlung einer WebRTC-Verbindung. Die Antwort enthält Informationen über vorhandene Medien, die Sitzung angehängt sind, unterstützte Codecs und Optionen des Browsers sowie bereits gesammelte ICE-Kandidaten.
createDataChannel()-
Initiates die Erstellung eines neuen Kanals zum entfernten Peer, über den Daten jeglicher Art übertragen werden können. Dies kann nützlich für Backchannel-Inhalte sein, wie Bilder, Dateitransfers, Text-Chat, Spiele-Paketaktualisierungen und so weiter.
createOffer()-
Initiates die Erstellung eines SDP-Angebots, um eine neue WebRTC-Verbindung zu einem entfernten Peer zu starten. Das SDP-Angebot beinhaltet Informationen über alle bereits an die WebRTC-Sitzung angehängten
MediaStreamTrack-Objekte, den vom Browser unterstützten Codec und Optionen sowie alle bereits vom ICE-Agenten gesammelten Kandidaten, um über den Signalisierungskanal zu einem potenziellen Peer gesendet zu werden, um 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()-
Initiates die Sammlung einer Identitätsbehauptung und gibt ein
Promisezurück, das zu einer als String kodierten Identitätsbehauptung aufgelöst wird. Dies hat nur eine Wirkung, wennsignalingStatenichtclosedist. getReceivers()-
Gibt ein Array von
RTCRtpReceiver-Objekten zurück, die jeweils einen RTP-Empfänger repräsentieren. getSenders()-
Gibt ein Array von
RTCRtpSender-Objekten zurück, die jeweils den RTP-Sender repräsentieren, 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 das spezifizierteMediaStreamTrackbereitstellen. getTransceivers()-
Gibt eine Liste aller
RTCRtpTransceiver-Objekte zurück, die verwendet werden, um Daten auf der Verbindung zu senden und zu empfangen. removeTrack()-
Weist das lokale Ende der Verbindung an, Medien von dem angegebenen Track nicht mehr zu senden, ohne den entsprechenden
RTCRtpSenderaus der Liste der Sender zu entfernen, wie sie vongetSenders()berichtet wird. Wenn der Track bereits gestoppt ist oder nicht in der Senderliste der Verbindung enthalten ist, hat diese Methode keine Wirkung. restartIce()-
Ermöglicht es, das erneute Sammeln von ICE-Kandidaten an beiden Enden der Verbindung einfach anzufordern. Dies vereinfacht den Prozess, indem dieselbe Methode sowohl vom Anrufer als auch vom Empfänger verwendet werden kann, um einen ICE-Neustart auszulösen.
setConfiguration()-
Legt die aktuelle Konfiguration der Verbindung basierend auf den Werten im angegebenen Objekt fest. Dies ermöglicht es Ihnen, die von der Verbindung verwendeten ICE-Server zu ändern und welche Transportpolicies zu verwenden sind.
setIdentityProvider()-
Legt den Identitätsanbieter (IdP) auf das in den Parametern angegebene Triplet fest: seinen Namen, das Protokoll, das zur Kommunikation mit ihm verwendet wird, 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. Es gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung asynchron geändert wurde. setRemoteDescription()-
Legt die spezifierte Sitzungsbeschreibung als aktuelles Angebot oder Antwort des entfernten Peers fest. Die Beschreibung legt die Eigenschaften des entfernten Endes der Verbindung fest, einschließlich des Medienformats. Es 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()für jeden Track verwenden, den Sie an den entfernten Peer senden möchten. createDTMFSender()-
Erstellt einen neuen
RTCDTMFSender, der einem spezifischenMediaStreamTrackzugeordnet ist und in der Lage sein wird, DTMF-Telefone-Signalisierungen über die Verbindung zu senden. removeStream()-
Entfernt einen
MediaStreamals lokale Audio- oder Videoquelle. Da diese Methode veraltet ist, sollten Sie stattdessenremoveTrack()verwenden.
Ereignisse
Diese Ereignisse können mit addEventListener() abgehört werden oder indem ein Ereignis-Listener der oneventname-Eigenschaft dieser Schnittstelle zugewiesen wird.
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 der Sammlung von ICE-Kandidaten ein Fehler auftritt. Das Ereignis beschreibt den Fehler.
iceconnectionstatechange-
Wird gesendet, wenn sich der Zustand der ICE-Verbindung ändert, z.B. wenn sie getrennt wird.
icegatheringstatechange-
Wird gesendet, wenn sich der Sammelstatus der ICE-Schicht, der durch
iceGatheringStatereflektiert wird, ä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 eine Verhandlung oder Neuverhandlung der ICE-Verbindung durchgeführt werden muss; dies kann sowohl beim erstmaligen Öffnen einer Verbindung als auch bei der Anpassung an sich ändernde Netzbedingungen passieren. Der Empfänger sollte darauf reagieren, indem er ein Angebot erstellt und es an den anderen Peer sendet.
signalingstatechange-
Wird gesendet, wenn sich der Signalisierungsstatus der ICE-Verbindung ändert.
track-
Wird gesendet, nachdem eine neue Spur zu einer der
RTCRtpReceiver-Instanzen hinzugefügt wurde, die die Verbindung ausmachen.
Veraltete Ereignisse
addstream-
Wird gesendet, wenn ein neuer
MediaStreamzur Verbindung hinzugefügt wurde. Statt auf dieses veraltete Ereignis zu hören, sollten Sie auftrack-Ereignisse lauschen; eines wird für jeden zur Verbindung hinzugefügtenMediaStreamTrackgesendet. removestream-
Wird gesendet, wenn ein
MediaStreamaus der Verbindung entfernt wurde. Statt auf dieses veraltete Ereignis zu hören, sollten Sie aufremovetrack-Ereignisse auf jedem Stream hören.
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 HTML-Videoaufnahme, Peer-to-Peer-Video- und Dateifreigabeanwendung (Quelle auf GitHub)