Start · Sprachen · JavaScript · Referenz · RTCDataChannel.reliable

RTCDataChannel.reliable

Eigenschaft

Die schreibgeschützte, veraltete Eigenschaft <code>reliable</code> zeigt an, ob ein <code>RTCDataChannel</code> Nachrichten zuverlässig (mit garantierter Zustellung) überträgt.

seit JavaScript Veraltet, nicht standardisiert – in aktuellen Brow deprecated seit ja Kategorie: webapi

Signatur

RTCDataChannel.reliable

Beschreibung

Die Eigenschaft RTCDataChannel.reliable ist ein schreibgeschützter Wahrheitswert. Er ist true, wenn der Datenkanal im zuverlässigen Modus arbeitet. Das bedeutet: Verlorene Nachrichten werden so lange neu gesendet, bis sie ankommen – ähnlich wie bei TCP. Der Wert ist false, wenn der Kanal unzuverlässig ist, also die Zahl der Neuübertragungen oder deren Zeitfenster begrenzt ist.

Die Eigenschaft stammt aus frühen Entwürfen der WebRTC-Spezifikation. Damals legte man beim Erzeugen eines Kanals mit createDataChannel() die Option reliable direkt fest. Die heutige Spezifikation hat dieses Modell ersetzt. Die Zuverlässigkeit ergibt sich jetzt aus den Eigenschaften maxRetransmits und maxPacketLifeTime: Sind beide null, ist der Kanal zuverlässig. Die Reihenfolge der Zustellung steuert davon getrennt die Eigenschaft ordered.

In neuem Code solltest du reliable nicht mehr verwenden. Ermittle die Zuverlässigkeit stattdessen aus maxRetransmits und maxPacketLifeTime. Die Eigenschaft ist nur noch interessant, wenn du alten WebRTC-Code pflegst oder portierst.

Rückgabewert

Typ
boolean | undefined
Beschreibung
true, wenn der Kanal Nachrichten garantiert zustellt, sonst false. In Browsern ohne diese veraltete Eigenschaft ist der Wert undefined.

Beispiele

Zuverlässigkeit prüfen – mit Rückfall auf die Standard-Eigenschaften

const pc = new RTCPeerConnection();
const channel = pc.createDataChannel('chat');

// Veraltete Eigenschaft nur nutzen, wenn vorhanden
const istZuverlaessig = typeof channel.reliable === 'boolean'
  ? channel.reliable
  : channel.maxRetransmits === null && channel.maxPacketLifeTime === null;

console.log('Zuverlässig:', istZuverlaessig);
Zuverlässig: true

Unzuverlässigen Kanal für Echtzeit-Spieldaten anlegen

const pc = new RTCPeerConnection();

// Moderne Variante: Zuverlässigkeit über maxRetransmits steuern
const gameChannel = pc.createDataChannel('positionen', {
  ordered: false,
  maxRetransmits: 0
});

const istZuverlaessig = (ch) =>
  ch.maxRetransmits === null && ch.maxPacketLifeTime === null;

console.log('reliable (veraltet):', gameChannel.reliable);
console.log('zuverlässig (berechnet):', istZuverlaessig(gameChannel));
reliable (veraltet): undefined zuverlässig (berechnet): false

Alten Code portieren: Hilfsfunktion statt reliable

// Früher: pc.createDataChannel('log', { reliable: false });
const createChannel = (pc, label, { reliable = true, lifetimeMs = 500 } = {}) =>
  pc.createDataChannel(label, reliable ? {} : { maxPacketLifeTime: lifetimeMs });

const pc = new RTCPeerConnection();
const logChannel = createChannel(pc, 'log', { reliable: false });

console.log(logChannel.maxPacketLifeTime);
500

// Wichtig · Fallstricke

  • Veraltet und nicht standardisiert: reliable gehört nicht mehr zur WebRTC-Spezifikation. Aktuelle Browser (Chrome, Firefox, Safari, Edge) geben meist undefined zurück. Verlass dich also nie allein auf diese Eigenschaft.
  • Die Option reliable in createDataChannel() wird von modernen Browsern ignoriert. Nutze stattdessen maxRetransmits oder maxPacketLifeTime, aber nie beide zugleich, sonst wird ein TypeError ausgelöst.
  • Zuverlässigkeit und Reihenfolge sind zwei getrennte Dinge: Ein zuverlässiger Kanal kann trotzdem ungeordnet sein (ordered: false).
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung hat keine Wirkung; im Strict Mode wird ein Fehler ausgelöst, falls ein Getter vorhanden ist.