RTCDataChannel
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
* Some parts of this feature may have varying levels of support.
Die RTCDataChannel-Schnittstelle repräsentiert einen Netzwerkkanal, der für bidirektionale Peer-to-Peer-Übertragungen beliebiger Daten verwendet werden kann. Jeder Datenkanal ist mit einer RTCPeerConnection verbunden, und jede Peer-Verbindung kann bis zu theoretisch maximal 65.534 Datenkanäle haben (das tatsächliche Limit kann je nach Browser variieren).
Um einen Datenkanal zu erstellen und einen entfernten Peer zur Teilnahme einzuladen, rufen Sie die Methode createDataChannel() von RTCPeerConnection auf. Der zur Datenübertragung eingeladene Peer erhält ein datachannel-Ereignis (vom Typ RTCDataChannelEvent), um ihm mitzuteilen, dass der Datenkanal zur Verbindung hinzugefügt wurde.
RTCDataChannel ist ein übertragbares Objekt.
Instanz-Eigenschaften
Erbt auch Eigenschaften von EventTarget.
binaryType-
Ein String, der den Objekttyp angibt, der zur Darstellung binärer Daten auf dem
RTCDataChannelverwendet werden soll. Die Werte entsprechen denen, die in der EigenschaftWebSocket.binaryTypezulässig sind:blob, wennBlob-Objekte verwendet werden, oderarraybuffer, wennArrayBuffer-Objekte verwendet werden. Der Standardwert istarraybuffer. bufferedAmountSchreibgeschützt-
Gibt die Anzahl der Bytes von Daten zurück, die derzeit zur Übertragung über den Datenkanal in die Warteschlange gestellt sind.
bufferedAmountLowThreshold-
Gibt die Anzahl von Bytes gepufferter ausgehender Daten an, die als "niedrig" angesehen werden. Der Standardwert ist 0.
idSchreibgeschützt-
Gibt eine ID-Nummer zurück (zwischen 0 und 65.534), die den
RTCDataChanneleindeutig identifiziert. labelSchreibgeschützt-
Gibt einen String zurück, der den Namen des Datenkanals beschreibt. Diese Bezeichnungen müssen nicht eindeutig sein.
maxPacketLifeTimeSchreibgeschützt-
Gibt die Zeitspanne in Millisekunden zurück, die dem Browser erlaubt ist, zu versuchen, eine Nachricht zu übertragen, wie beim Erstellen des Datenkanals festgelegt, oder
null. maxRetransmitsSchreibgeschützt-
Gibt die maximale Anzahl von Übertragungsversuchen zurück, die der Browser unternehmen sollte, um eine Nachricht erneut zu senden, bevor er aufgibt, wie beim Erstellen des Datenkanals festgelegt, oder
null, was anzeigt, dass es kein Maximum gibt. negotiatedSchreibgeschützt-
Gibt an, ob die Verbindung des
RTCDataChanneldurch die Webanwendung (true) oder durch die WebRTC-Schicht (false) verhandelt wurde. Der Standardwert istfalse. orderedSchreibgeschützt-
Gibt an, ob der Datenkanal garantiert, dass Nachrichten in der richtigen Reihenfolge geliefert werden; der Standardwert ist
true, was bedeutet, dass der Datenkanal tatsächlich geordnet ist. prioritySchreibgeschützt-
Gibt einen String zurück, der die Priorität des Datenkanals angibt, wie beim Erstellen des Kanals festgelegt, oder wie vom benutzeragenten zugewiesen. Mögliche Werte sind
"very-low","low","medium"oder"high". protocolSchreibgeschützt-
Gibt einen String zurück, der den Namen des verwendeten Subprotokolls enthält. Wurde kein Protokoll angegeben, als der Datenkanal erstellt wurde, ist der Wert dieser Eigenschaft der leere String (
""). readyStateSchreibgeschützt-
Gibt einen String zurück, der den Zustand der zugrunde liegenden Datenverbindung des Datenkanals angibt. Er kann einen der folgenden Werte haben:
connecting,open,closingoderclosed.
Veraltete Eigenschaften
reliableSchreibgeschützt Veraltet Nicht standardisiert-
Gibt an, ob der Datenkanal zuverlässig ist oder nicht.
Instanz-Methoden
Erbt auch Methoden von EventTarget.
Ereignisse
bufferedamountlow-
Wird gesendet, wenn die Anzahl der Bytes von Daten im ausgehenden Datenpuffer unter den Wert fällt, der mit
bufferedAmountLowThresholdangegeben wurde. close-
Wird gesendet, wenn der zugrunde liegende Datentransport geschlossen wird.
closing-
Wird gesendet, wenn der zugrunde liegende Datentransport kurz vor dem Schließen steht.
error-
Wird gesendet, wenn ein Fehler auf dem Datenkanal auftritt.
message-
Wird gesendet, wenn eine Nachricht vom entfernten Peer empfangen wurde. Der Inhalt der Nachricht kann in der Eigenschaft
datades Ereignisses gefunden werden. open-
Wird gesendet, wenn der Datenkanal erstmals geöffnet wird, oder wenn die zugrunde liegende Verbindung eines bestehenden Datenkanals wieder geöffnet wird.
Datenformat
Das zugrunde liegende Datenformat wird durch die IEEE-Spezifikation SDP Offer/Answer Procedures for SCTP over DTLS Transport(RFC 8841) definiert. Das aktuelle Format spezifiziert sein Protokoll als entweder "UDP/DTLS/SCTP" (UDP mit DTLS mit SCTP) oder "TCP/DTLS/SCTP" (TCP mit DTLS mit SCTP). Ältere Browser spezifizieren möglicherweise nur "DTLS/SCTP".
Beispiel
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");
dc.onmessage = (event) => {
console.log(`received: ${event.data}`);
};
dc.onopen = () => {
console.log("datachannel open");
};
dc.onclose = () => {
console.log("datachannel close");
};
Spezifikationen
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers> # rtcdatachannel> |