RTCPeerConnection: RTCPeerConnection() Konstruktor
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Der RTCPeerConnection()
Konstruktor gibt ein neu erstelltes RTCPeerConnection
zurück, das eine Verbindung zwischen dem lokalen Gerät und einem entfernten Peer darstellt.
Syntax
new RTCPeerConnection()
new RTCPeerConnection(configuration)
Parameter
configuration
Optional-
Ein Objekt, das Optionen zum Konfigurieren der neuen Verbindung bereitstellt:
bundlePolicy
Optional-
Gibt an, wie die Verhandlung von Kandidaten gehandhabt werden soll, wenn der entfernte Peer nicht mit dem SDP BUNDLE-Standard kompatibel ist. Wenn der entfernte Endpunkt BUNDLE-kompatibel ist, werden alle Medientracks und Datenkanäle unabhängig von der verwendeten Richtlinie auf einen einzigen Transport gebündelt, sobald die Verhandlung abgeschlossen ist, und alle überflüssigen Transporte, die ursprünglich erstellt wurden, werden zu diesem Zeitpunkt geschlossen.
In technischen Begriffen ermöglicht ein BUNDLE, dass alle Medienströme zwischen zwei Peers über ein einziges 5-Tupel fließen; das heißt, von einer einzigen IP und Port auf einem Peer zu einer einzigen IP und Port auf dem anderen Peer, wobei dasselbe Transportprotokoll verwendet wird.
Dies muss einer der folgenden Zeichenkettenwerte sein, wenn keiner angegeben wird, wird
balanced
angenommen:"balanced"
-
Der ICE-Agent erstellt zunächst einen
RTCDtlsTransport
für jeden hinzugefügten Inhaltstyp: Audio, Video und Datenkanäle. Wenn der entfernte Endpunkt nicht BUNDLE-kompatibel ist, übernimmt jeder dieser DTLS-Transporte die gesamte Kommunikation für einen Datentyp. "max-compat"
-
Der ICE-Agent erstellt zunächst einen
RTCDtlsTransport
pro Medientrack und einen separaten für Datenkanäle. Wenn der entfernte Endpunkt nicht BUNDLE-kompatibel ist, wird alles auf diesen separaten DTLS-Transporten verhandelt. "max-bundle"
-
Der ICE-Agent erstellt zunächst nur einen einzigen
RTCDtlsTransport
, um alle Daten derRTCPeerConnection
zu transportieren. Wenn der entfernte Endpunkt nicht BUNDLE-kompatibel ist, wird nur ein einzelner Track verhandelt und der Rest ignoriert.
certificates
Optional-
Ein
Array
von Objekten des TypsRTCCertificate
, die von der Verbindung zur Authentifizierung verwendet werden. Wenn diese Eigenschaft nicht angegeben ist, wird für jedeRTCPeerConnection
-Instanz automatisch ein Satz von Zertifikaten generiert. Obwohl nur ein Zertifikat von einer bestimmten Verbindung verwendet wird, kann das Bereitstellen von Zertifikaten für mehrere Algorithmen in einigen Fällen die Erfolgschancen bei der Verbindungserstellung verbessern. Siehe Verwendung von Zertifikaten für weitere Informationen.Hinweis: Diese Konfigurationsoption kann nach der ersten Angabe nicht mehr geändert werden; sobald die Zertifikate festgelegt wurden, wird diese Eigenschaft in zukünftigen Aufrufen von
RTCPeerConnection.setConfiguration()
ignoriert. iceCandidatePoolSize
Optional-
Ein nicht signierter 16-Bit-Integer-Wert, der die Größe des vorab abgerufenen ICE-Kandidatenpools angibt. Der Standardwert ist 0 (was bedeutet, dass kein Kandidatenvorababruf erfolgt). In einigen Fällen kann es sinnvoll sein, dem ICE-Agenten zu erlauben, ICE-Kandidaten bereits vor Beginn des Verbindungsversuchs abzurufen, damit sie zur Überprüfung verfügbar sind, wenn
RTCPeerConnection.setLocalDescription()
aufgerufen wird.Hinweis: Das Ändern der Größe des ICE-Kandidatenpools kann den Beginn der ICE-Erfassung auslösen.
iceServers
Optional-
Ein Array von Objekten, von denen jedes einen Server beschreibt, der vom ICE-Agenten verwendet werden kann; hierbei handelt es sich typischerweise um STUN- und/oder TURN-Server. Wenn dies nicht angegeben ist, erfolgt der Verbindungsversuch ohne verfügbaren STUN- oder TURN-Server, was die Verbindung auf lokale Peers beschränkt. Jedes Objekt kann die folgenden Eigenschaften haben:
credential
Optional-
Die Anmeldeinformationen für die Anmeldung beim Server. Dies wird nur verwendet, wenn das Objekt einen TURN-Server darstellt.
credentialType
Optional Veraltet Nicht standardisiert-
Wenn das Objekt einen TURN-Server darstellt, gibt dieses Attribut an, welche Art von
credential
bei der Verbindung verwendet werden soll. Der Standardwert ist"password"
. urls
-
Diese erforderliche Eigenschaft ist entweder ein einzelner Zeichenfolgenwert oder ein Array von Zeichenfolgen, von denen jede eine URL angibt, die zur Verbindung mit dem Server verwendet werden kann.
username
Optional-
Wenn das Objekt einen TURN-Server darstellt, ist dies der Benutzername, der während der Authentifizierung verwendet wird.
iceTransportPolicy
Optional-
Eine Zeichenfolge, die die aktuelle ICE-Transportpolitik darstellt. Mögliche Werte sind:
peerIdentity
Optional-
Eine Zeichenfolge, die die Ziel-Peer-Identität für die
RTCPeerConnection
angibt. Wenn dieser Wert gesetzt ist (Standardwert istnull
), wird dieRTCPeerConnection
keine Verbindung zu einem entfernten Peer herstellen, es sei denn, sie kann erfolgreich mit dem angegebenen Namen authentifizieren. rtcpMuxPolicy
Optional-
Eine Zeichenfolge, die die RTCP-Multiplexierungsrichtlinie angibt, die beim Erfassen von ICE-Kandidaten verwendet werden soll, um nicht-multiplexierte RTCP zu unterstützen. Mögliche Werte sind:
"negotiate"
-
Weist den ICE-Agenten an, sowohl RTP als auch RTCP-Kandidaten zu sammeln. Wenn der entfernte Peer RTCP multiplexen kann, werden RTCP-Kandidaten über die entsprechenden RTP-Kandidaten multiplexed. Andernfalls werden sowohl die RTP- als auch die RTCP-Kandidaten separat zurückgegeben.
"require"
-
Sagt dem ICE-Agenten, ICE-Kandidaten nur für RTP zu sammeln und RTCP darüber zu multiplexen. Wenn der entfernte Peer RTCP-Multiplexen nicht unterstützt, schlägt die Sitzungsverhandlung fehl. Dies ist der Standardwert.
Rückgabewert
Ein neu erstelltes RTCPeerConnection
-Objekt, konfiguriert gemäß configuration
, falls angegeben; andernfalls wird eine angemessene Grundeinstellung verwendet.
Verwendung von Zertifikaten
Wenn Sie Ihre eigenen Zertifikate für die Verwendung durch eine RTCPeerConnection
bereitstellen möchten, anstatt dass die RTCPeerConnection
sie automatisch generiert, tun Sie dies, indem Sie die statische Funktion RTCPeerConnection.generateCertificate()
aufrufen.
Der Wert der certificates
-Eigenschaft kann nicht mehr geändert werden, sobald er erstmals angegeben wurde. Wenn er in die Konfiguration aufgenommen wird, die bei einem Aufruf von setConfiguration()
auf eine Verbindung übergeben wird, wird er ignoriert.
Dieses Attribut unterstützt mehrere Zertifikate, weil, obwohl eine DTLS-Verbindung nur ein Zertifikat verwendet, die Bereitstellung mehrerer Zertifikate die Unterstützung für mehrere Verschlüsselungsalgorithmen ermöglicht. Die Implementierung von RTCPeerConnection
wählt aus, welches Zertifikat basierend auf den Algorithmen, die es und der entfernte Peer unterstützen, während des DTLS-Handshakes verwendet wird.
Wenn Sie keine Zertifikate bereitstellen, werden neue automatisch generiert. Ein offensichtlicher Vorteil, eigene bereitzustellen, ist die Kontinuität des Identitätsschlüssels — wenn Sie für nachfolgende Anrufe dasselbe Zertifikat verwenden, kann der entfernte Peer erkennen, dass Sie derselbe Anrufer sind. Dies vermeidet auch die Kosten für die Erstellung neuer Schlüssel.
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers # dom-peerconnection |
Browser-Kompatibilität
BCD tables only load in the browser