Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
RTCDtlsTransport
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since März 2022.
* Some parts of this feature may have varying levels of support.
DasRTCDtlsTransport Interface bietet Zugriff auf Informationen über den Datagram Transport Layer Security (DTLS) Transport, über den dieRTP- undRTCP-Pakete einerRTCPeerConnection von derenRTCRtpSender undRTCRtpReceiver Objekten gesendet und empfangen werden.
EinRTCDtlsTransport Objekt wird auch verwendet, um Informationen über dieSCTP-Pakete zu liefern, die von denDatenkanälen einer Verbindung übertragen und empfangen werden.
Merkmale des DTLS-Transports beinhalten die Hinzufügung von Sicherheit zum zugrunde liegenden Transport; dasRTCDtlsTransport Interface kann verwendet werden, um Informationen über den zugrunde liegenden Transport und die durch die DTLS-Schicht hinzugefügte Sicherheit zu erhalten.
In diesem Artikel
Instanz-Eigenschaften
Erbt auch Eigenschaften vonEventTarget.
iceTransportSchreibgeschütztGibt eine Referenz auf das zugrunde liegende
RTCIceTransportObjekt zurück.stateSchreibgeschütztGibt einen String zurück,der den Zustand des zugrunde liegenden Datagram Transport Layer Security (DTLS) Transports beschreibt.Es kann einer der folgenden Werte sein:
new,connecting,connected,closedoderfailed.
Instanz-Methoden
Erbt auch Methoden vonEventTarget.
getRemoteCertificates()Gibt ein Array von
ArrayBufferzurück, das die Zertifikate des Remote-Peers der Verbindung enthält.
Ereignisse
errorWird gesendet, wenn ein Transport-Level-Fehler auf der
RTCPeerConnectionauftritt.statechangeWird gesendet, wenn sich der
statedes DTLS-Transports ändert.
Beschreibung
>Zuweisung von DTLS-Transporten
RTCDtlsTransport Objekte werden erstellt, wenn eine App entwedersetLocalDescription() odersetRemoteDescription() aufruft. Die Anzahl der erstellten DTLS-Transporte und deren Verwendung hängt vom Bündelungsmodus ab, der beim Erstellen derRTCPeerConnection verwendet wird.
Ob Bündelung verwendet wird, hängt davon ab, was der andere Endpunkt verhandeln kann. Alle Browser unterstützen Bündelung, sodass, wenn beide Endpunkte Browser sind, Sie sicher sein können, dass Bündelung verwendet wird.
Einige nicht-browserbasierte Legacy-Endpunkte unterstützen jedoch möglicherweise keine Bündelung. Um mit solchen Endpunkten verhandeln zu können (oder um sie ganz auszuschließen), kann die EigenschaftbundlePolicy beim Erstellen der Verbindung angegeben werden. DiebundlePolicy ermöglicht es Ihnen, zu steuern, wie mit diesen Legacy-Endpunkten verhandelt wird. Die Standardrichtlinie ist"balanced", die eine Balance zwischen Leistung und Kompatibilität bietet.
Zum Beispiel, um die Verbindung mit dem höchsten Bündelungsgrad zu erstellen:
const rtcConfig = { bundlePolicy: "max-bundle",};const pc = new RTCPeerConnection(rtcConfig);Bundling ermöglicht es Ihnen, einenRTCDtlsTransport zu verwenden, um die Daten für mehrere höherstufige Transporte, wie z.B. mehrereRTCRtpTransceiver, zu tragen.
Wenn BUNDLE nicht verwendet wird
Wenn die Verbindung ohne Verwendung von BUNDLE erstellt wird, hat jede RTP- oder RTCP-Komponente jedesRTCRtpTransceiver ihren eigenenRTCDtlsTransport; das heißt, jederRTCRtpSender undRTCRtpReceiver hat seinen eigenen Transport und alleRTCDataChannel Objekte teilen sich einen dem SCTP gewidmeten Transport.
Wenn BUNDLE verwendet wird
Wenn die Verbindung BUNDLE verwendet, repräsentiert jedesRTCDtlsTransport Objekt eine Gruppe vonRTCRtpTransceiver Objekten. Wenn die Verbindung immax-compat Modus erstellt wurde, ist jeder Transport dafür verantwortlich, alle Kommunikationen für einen gegebenen Medientyp zu handhaben (Audio, Video oder Datenkanal). Somit wird eine Verbindung mit beliebig vielen Audio- und Video-Kanälen immer genau einen DTLS-Transport für Audio- und einen für Video-Kommunikation haben.
Da Transporte früh im Verhandlungsprozess etabliert werden, ist es wahrscheinlich, dass erst nach ihrer Erstellung bekannt ist, ob das Remote-Peer die Bündelung unterstützt. Aus diesem Grund werden Sie manchmal zu Beginn separate Transporte sehen, einen für jeden Track, und dann sehen, wie sie gebündelt werden, sobald bekannt ist, dass Bündelung möglich ist. Wenn Ihr Code direkt aufRTCRtpSender und/oderRTCRtpReceiver zugreift, können Sie Situationen begegnen, in denen sie zunächst separat sind, dann die Hälfte oder mehr davon geschlossen wird und die Sender und Empfänger aktualisiert werden, um auf die passende verbleibendeRTCDtlsTransport Objekte zu verweisen.
Datenkanäle
RTCDataChannel verwendenSCTP zur Kommunikation. Alle Datenkanäle einer Peer-Verbindung teilen sich einen einzigenRTCSctpTransport, der sich in dersctp Eigenschaft der Verbindung befindet.
Sie können wiederum denRTCDtlsTransport identifizieren, der verwendet wird, um die SCTP-Kommunikation der Datenkanäle sicher zu kapseln, indem Sie dietransport-Eigenschaft desRTCSctpTransport Objekts betrachten.
Beispiele
Dieses Beispiel zeigt eine Funktion,tallySenders(), die über dieRTCRtpSender einerRTCPeerConnection iteriert und zählt, wie viele von ihnen sich in verschiedenen Zuständen befinden. Die Funktion gibt ein Objekt zurück, das Eigenschaften enthält, deren Werte angeben, wie viele Sender sich in jedem Zustand befinden.
let pc = new RTCPeerConnection({ bundlePolicy: "max-bundle" });// …function tallySenders(pc) { let results = { transportMissing: 0, connectionPending: 0, connected: 0, closed: 0, failed: 0, unknown: 0, }; let senderList = pc.getSenders(); senderList.forEach((sender) => { let transport = sender.transport; if (!transport) { results.transportMissing++; } else { switch (transport.state) { case "new": case "connecting": results.connectionPending++; break; case "connected": results.connected++; break; case "closed": results.closed++; break; case "failed": results.failed++; break; default: results.unknown++; break; } } }); return results;}Beachten Sie, dass in diesem Code die Zuständenew undconnecting als ein einzigerconnectionPending Status im zurückgegebenen Objekt behandelt werden.
Spezifikationen
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # dom-rtcdtlstransport> |