RTCDataChannel

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.

Die Schnittstelle RTCDataChannel repräsentiert einen Netzwerkkanal, der für bidirektionale Peer-to-Peer-Übertragungen von beliebigen Daten verwendet werden kann. Jeder Datenkanal ist mit einer RTCPeerConnection verknüpft, und jede Peer-Verbindung kann bis zu einem theoretischen Maximum von 65.534 Datenkanälen besitzen (die tatsächliche Grenze kann von Browser zu Browser variieren).

Um einen Datenkanal zu erstellen und einen Remote-Peer einzuladen, treten Sie mit der RTCPeerConnection-Methode createDataChannel() in Kontakt. Der Peer, der eingeladen wird, Daten auszutauschen, erhält ein datachannel-Ereignis (vom Typ RTCDataChannelEvent), um darüber informiert zu werden, dass der Datenkanal zur Verbindung hinzugefügt wurde.

RTCDataChannel ist ein übertragbares Objekt.

EventTarget RTCDataChannel

Instanz-Eigenschaften

Erbt auch Eigenschaften von EventTarget.

binaryType

Ein String, der den Typ des Objekts angibt, das verwendet werden soll, um empfangene Binärdaten auf dem RTCDataChannel zu repräsentieren. Die Werte sind die gleichen wie auf der WebSocket.binaryType-Eigenschaft erlaubt: blob, wenn Blob-Objekte verwendet werden, oder arraybuffer, wenn ArrayBuffer-Objekte verwendet werden. Der Standardwert ist blob.

bufferedAmount Nur lesbar

Gibt die Anzahl der Bytes an Daten zurück, die derzeit in der Warteschlange stehen, um über den Datenkanal gesendet zu werden.

bufferedAmountLowThreshold

Legt die Anzahl der Bytes fest, die als "wenig" gepuffert eingehende Daten gelten. Der Standardwert ist 0.

id Nur lesbar

Gibt eine ID-Nummer (zwischen 0 und 65.534) zurück, die den RTCDataChannel eindeutig identifiziert.

label Nur lesbar

Gibt einen String zurück, der einen Namen enthält, der den Datenkanal beschreibt. Diese Bezeichnungen müssen nicht eindeutig sein.

maxPacketLifeTime Nur lesbar

Gibt die Anzahl der Millisekunden zurück, die der Browser Zeit hat, um zu versuchen, eine Nachricht zu übertragen, so wie es beim Erstellen des Datenkanals festgelegt wurde, oder null.

maxRetransmits Nur lesbar

Gibt die maximale Anzahl der Versuche zurück, die der Browser unternehmen soll, um eine Nachricht erneut zu senden, bevor er aufgibt, wie es beim Erstellen des Datenkanals festgelegt wurde, oder null, was anzeigt, dass es kein Maximum gibt.

negotiated Nur lesbar

Gibt an, ob die Verbindung des RTCDataChannel von der Web-App (true) oder von der WebRTC-Schicht (false) ausgehandelt wurde. Der Standardwert ist false.

ordered Nur lesbar

Gibt an, ob der Datenkanal die geordnete Lieferung von Nachrichten garantiert; der Standardwert ist true, was darauf hinweist, dass der Datenkanal tatsächlich geordnet ist.

protocol Nur lesbar

Gibt einen String zurück, der den Namen des verwendeten Unterprotokolls enthält. Wenn kein Protokoll beim Erstellen des Datenkanals angegeben wurde, ist der Wert dieser Eigenschaft der leere String ("").

readyState Nur lesbar

Gibt einen String zurück, der den Zustand der zugrunde liegenden Datenverbindung des Datenkanals anzeigt. Es kann einen der folgenden Werte haben: connecting, open, closing oder closed.

Veraltete Eigenschaften

reliable Nur lesbar Veraltet Nicht standardisiert

Gibt an, ob der Datenkanal zuverlässig ist oder nicht.

Instanz-Methoden

Erbt auch Methoden von EventTarget.

close()

Schließt den RTCDataChannel. Jeder der Partner kann diese Methode aufrufen, um die Schließung des Kanals einzuleiten.

send()

Sendet Daten über den Datenkanal an den Remote-Peer.

Ereignisse

bufferedamountlow

Wird gesendet, wenn die Anzahl der Bytes an Daten im ausgehenden Datenpuffer unter den durch bufferedAmountLowThreshold angegebenen Wert fällt.

close

Wird gesendet, wenn der zugrunde liegende Datenverkehr geschlossen wird.

closing

Wird gesendet, wenn der zugrunde liegende Datenverkehr dabei ist, sich zu schließen.

error

Wird gesendet, wenn ein Fehler auf dem Datenkanal auftritt.

message

Wird gesendet, wenn eine Nachricht vom Remote-Peer empfangen wurde. Der Inhalt der Nachricht kann in der data-Eigenschaft des Ereignisses gefunden werden.

open

Wird gesendet, wenn der Datenkanal erstmals geöffnet wird oder wenn die bestehende zugrunde liegende Verbindung eines Datenkanals erneut 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 entweder als "UDP/DTLS/SCTP" (UDP mit DTLS und SCTP) oder "TCP/DTLS/SCTP" (TCP mit DTLS und SCTP). Ältere Browser könnten nur "DTLS/SCTP" spezifizieren.

Beispiel

js
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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch