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 stellt eine WebRTC-Verbindung zwischen dem lokalen Computer und einem entfernten Peer dar. Sie stellt Methoden bereit, um eine Verbindung zu einem entfernten Peer herzustellen, die Verbindung zu warten und zu überwachen und die Verbindung zu schließen, sobald sie 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 angibt, ob der entfernte Peer trickled ICE-Kandidaten 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, welches das lokale Ende der Verbindung beschreibt, wie sie zuletzt erfolgreich ausgehandelt wurde seit dem letzten Mal, als dieseRTCPeerConnectiondie Verhandlung und Verbindung zu einem entfernten Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die möglicherweise bereits vom ICE-Agenten generiert wurden, seit das Angebot oder die Antwort, die in der Beschreibung dargestellt werden, erstmals instanziiert wurde. currentRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, welches das entfernte Ende der Verbindung beschreibt, wie es zuletzt erfolgreich ausgehandelt wurde seit dem letzten Mal, als dieseRTCPeerConnectiondie Verhandlung und Verbindung zu einem entfernten Peer abgeschlossen hat. Ebenfalls enthalten ist eine Liste aller ICE-Kandidaten, die möglicherweise bereits vom ICE-Agenten generiert wurden, seit das Angebot oder die Antwort, die in der Beschreibung dargestellt werden, erstmals instanziiert wurde. iceConnectionStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand des ICE-Agenten angibt, der mit dieser RTCPeerConnection verbunden ist. Es kann einer der folgenden Werte sein:
new,checking,connected,completed,failed,disconnectedoderclosed. iceGatheringStateSchreibgeschützt-
Gibt einen String zurück, der den ICE-Sammelzustand der Verbindung beschreibt. Damit können Sie beispielsweise feststellen, 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 Identity-Provider (IdP) anzumelden. Kann
nullsein, wenn keine Anmeldung erforderlich ist. localDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescriptionzurück, das die Sitzung für das lokale Ende der Verbindung beschreibt. Wenn es noch nicht gesetzt wurde, wirdnullzurückgegeben. peerIdentitySchreibgeschützt-
Gibt ein
Promisezurück, das auf einRTCIdentityAssertionaufgelöst wird, welches einen String enthält, der den entfernten Peer identifiziert. Sobald dieses Versprechen erfolgreich aufgelöst wurde, 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 bevorstehende Konfigurationsänderung für das lokale Ende der Verbindung beschreibt. Dies beschreibt nicht die Verbindung, wie sie derzeit besteht, sondern wie sie in naher Zukunft existieren könnte. pendingRemoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, das eine bevorstehende Konfigurationsänderung für das entfernte Ende der Verbindung beschreibt. Dies beschreibt nicht die Verbindung, wie sie derzeit besteht, sondern wie sie in naher Zukunft existieren könnte. remoteDescriptionSchreibgeschützt-
Gibt ein
RTCSessionDescription-Objekt zurück, welches die Sitzung, einschließlich Konfigurations- und Medieninformationen, für das entfernte Ende der Verbindung beschreibt. Wenn dies noch nicht gesetzt wurde, gibt esnullzurück. sctpSchreibgeschützt-
Gibt ein
RTCSctpTransport-Objekt zurück, welches 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 beim Verbinden oder Wiederverbinden mit einem anderen Peer beschreibt. 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 den dazugehörigen privaten Schlüssel und gibt ein
Promisezurück, das mit dem neuenRTCCertificateaufgelöst wird, sobald es generiert ist.
Instanz-Methoden
Erbt auch Methoden von EventTarget.
addIceCandidate()-
Fügt einen neuen entfernten Kandidaten zur Remote-Beschreibung der
RTCPeerConnectionhinzu, die den Zustand des entfernten Endes der Verbindung beschreibt. addTrack()-
Fügt einen neuen
MediaStreamTrackzu den zu übertragenden Spuren zum anderen Peer hinzu. addTransceiver()-
Erstellt ein neues
RTCRtpTransceiverund fügt es zu den mit der Verbindung assoziierten Transceivern hinzu. Jeder Transceiver repräsentiert einen bidirektionalen Stream und hat sowohl einRTCRtpSenderals auch einRTCRtpReceiverzugeordnet. close()-
Schließt die aktuelle Peer-Verbindung.
createAnswer()-
Initiiert die Erstellung einer SDP-Antwort auf ein vom entfernten Peer erhaltenes Angebot während der Angebot/Antwort-Verhandlung einer WebRTC-Verbindung. Die Antwort enthält Informationen über bereits an die Sitzung angehängte Medien, von den Browser unterstützte Codecs und Optionen sowie bereits gesammelte ICE-Kandidaten.
createDataChannel()-
Initiiert die Erstellung eines neuen Kanals, der mit dem entfernten Peer verbunden ist und über den beliebige Daten übertragen werden können. Dies kann nützlich für Back-Channel-Inhalte wie Bilder, Dateiübertragung, Text-Chat, Spielaktualisierungspakete usw. sein.
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 vom ICE-Agenten gesammelten Kandidaten, mit dem Ziel, sie über den Signalisierungskanal an einen potenziellen Peer zu senden, 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()-
Initiiert das Sammeln einer Identitätsaussage und gibt ein
Promisezurück, wenn diese aufgelöst wird zu einer als String kodierten Identitätsaussage. Dies hat nur dann 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 darstellt, der für die Übertragung der Daten einer Spur verantwortlich ist. getStats()-
Gibt ein
Promisezurück, das mit Daten aufgelöst wird, die Statistiken über entweder die gesamte Verbindung oder über den angegebenenMediaStreamTrackbereitstellen. getTransceivers()-
Gibt eine Liste aller
RTCRtpTransceiver-Objekte zurück, die verwendet werden, um Daten auf der Verbindung zu senden und zu empfangen. removeTrack()-
Fordert das lokale Ende der Verbindung auf, das Senden von Medien von der angegebenen Spur zu beenden, ohne den entsprechenden
RTCRtpSenderaus der Liste der Sender zu entfernen, wie sie vongetSenders()gemeldet wird. Wenn die Spur bereits gestoppt ist oder nicht in der Senderliste der Verbindung enthalten ist, hat diese Methode keine Auswirkungen. restartIce()-
Ermöglicht es, auf einfache Weise zu verlangen, dass das Sammeln von ICE-Kandidaten an beiden Enden der Verbindung erneut durchgeführt wird. Dies vereinfacht den Prozess, indem die gleiche Methode verwendet werden kann, sowohl vom Anrufer als auch vom Empfänger, um einen ICE-Neustart auszulösen.
setConfiguration()-
Legt die aktuelle Konfiguration der Verbindung basierend auf den im angegebenen Objekt enthaltenen Werten fest. Dies ermöglicht es Ihnen, die von der Verbindung verwendeten ICE-Server zu ändern und welche Transportrichtlinien verwendet werden sollen.
setIdentityProvider()-
Setzt den Identity-Provider (IdP) auf das in den Parametern angegebene Tripel: 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 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 geändert wurde, asynchron. setRemoteDescription()-
Setzt die angegebene Sitzungsbeschreibung als aktuelles Angebot oder Antwort des entfernten Peers. Die Beschreibung gibt die Eigenschaften des entfernten Endes der Verbindung an, einschließlich des Medienformats. Es gibt ein
Promisezurück, das erfüllt wird, sobald die Beschreibung geändert wurde, asynchron.
Veraltete Methoden
addStream()Veraltet Nicht standardisiert-
Fügt einen
MediaStreamals lokale Quelle für Audio oder Video hinzu. Statt diese veraltete Methode zu verwenden, sollten SieaddTrack()einmal für jede Spur verwenden, die Sie an den entfernten Peer senden möchten. createDTMFSender()Veraltet Nicht standardisiert-
Erstellt einen neuen
RTCDTMFSender, der mit einem bestimmtenMediaStreamTrackverbunden ist und in der Lage sein wird, DTMF-Telefon-Signalisierung über die Verbindung zu senden. removeStream()Veraltet Nicht standardisiert-
Entfernt einen
MediaStreamals lokale Quelle für Audio oder Video. Da diese Methode veraltet ist, sollten Sie stattdessenremoveTrack()verwenden.
Ereignisse
Hören Sie auf diese Ereignisse mit addEventListener() oder durch Zuweisen eines Ereignis-Listeners zur oneventname-Eigenschaft dieser Schnittstelle.
connectionstatechange-
Wird gesendet, wenn sich der gesamte 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 ein Fehler während des ICE-Kandidaten-Sammelns auftrat. Das Ereignis beschreibt den Fehler.
iceconnectionstatechange-
Wird gesendet, wenn sich der Zustand der ICE-Verbindung ändert, zum Beispiel, wenn sie getrennt wird.
icegatheringstatechange-
Wird gesendet, wenn sich der Sammelstatus der ICE-Schicht, reflektiert durch
iceGatheringState, ändert. Dies zeigt an, ob die ICE-Verhandlung noch nicht begonnen hat (new), ob Kandidaten gesammelt werden (gathering) oder ob sie 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 als auch dann passieren, wenn es notwendig ist, sich an verändernde Netzwerkbedingungen anzupassen. Der Empfänger sollte darauf reagieren, indem er ein Angebot erstellt und es an den anderen Peer sendet.
signalingstatechange-
Wird gesendet, wenn sich der Signalisierungszustand der Verbindung ICE ändert.
track-
Wird gesendet, nachdem ein neuer Track zu einer der
RTCRtpReceiver-Instanzen hinzugefügt wurde, die die Verbindung umfassen.
Veraltete Ereignisse
addstreamVeraltet Nicht standardisiert-
Gesendet, wenn ein neuer
MediaStreamzur Verbindung hinzugefügt wurde. Anstatt auf dieses veraltete Ereignis zu hören, sollten Sie auftrack-Ereignisse hören; es wird eins für jedenMediaStreamTrackgesendet, der zur Verbindung hinzugefügt wird. removestreamVeraltet Nicht standardisiert-
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
| 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)