Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.

EventTarget RTCDataChannel

Instanz-Eigenschaften

Erbt auch Eigenschaften von EventTarget.

binaryType

Ein String, der den Objekttyp angibt, der zur Darstellung binärer Daten auf dem RTCDataChannel verwendet werden soll. Die Werte entsprechen denen, die in der Eigenschaft WebSocket.binaryType zulässig sind: blob, wenn Blob-Objekte verwendet werden, oder arraybuffer, wenn ArrayBuffer-Objekte verwendet werden. Der Standardwert ist arraybuffer.

bufferedAmount Schreibgeschü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.

id Schreibgeschützt

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

label Schreibgeschützt

Gibt einen String zurück, der den Namen des Datenkanals beschreibt. Diese Bezeichnungen müssen nicht eindeutig sein.

maxPacketLifeTime Schreibgeschü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.

maxRetransmits Schreibgeschü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.

negotiated Schreibgeschützt

Gibt an, ob die Verbindung des RTCDataChannel durch die Webanwendung (true) oder durch die WebRTC-Schicht (false) verhandelt wurde. Der Standardwert ist false.

ordered Schreibgeschü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.

priority Schreibgeschü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".

protocol Schreibgeschü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 ("").

readyState Schreibgeschü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, closing oder closed.

Veraltete Eigenschaften

reliable Schreibgeschützt 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. Entweder Peer darf diese Methode aufrufen, um den Kanal zu schließen.

send()

Sendet Daten über den Datenkanal an den entfernten Peer.

Ereignisse

bufferedamountlow

Wird gesendet, wenn die Anzahl der Bytes von Daten im ausgehenden Datenpuffer unter den Wert fällt, der mit bufferedAmountLowThreshold angegeben 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 data des 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

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

Siehe auch