Signatur
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
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);
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));
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);
// Wichtig · Fallstricke
- Veraltet und nicht standardisiert:
reliablegehört nicht mehr zur WebRTC-Spezifikation. Aktuelle Browser (Chrome, Firefox, Safari, Edge) geben meistundefinedzurück. Verlass dich also nie allein auf diese Eigenschaft. - Die Option
reliableincreateDataChannel()wird von modernen Browsern ignoriert. Nutze stattdessenmaxRetransmitsodermaxPacketLifeTime, aber nie beide zugleich, sonst wird einTypeErrorausgelö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.