Signatur
Beschreibung
Die schreibgeschützte Eigenschaft maxPacketLifeTime eines RTCDataChannel gibt an, wie viele Millisekunden der Browser versuchen darf, eine Nachricht zu übertragen und bei Verlust erneut zu senden. Danach wird die Nachricht verworfen. Den Wert legt man beim Erstellen des Kanals über die Option maxPacketLifeTime in RTCPeerConnection.createDataChannel() fest.
Mit dieser Option läuft der Kanal im unzuverlässigen Modus mit Zeitgrenze. Das eignet sich für Daten, die schnell veralten, etwa Spielerpositionen in Echtzeitspielen, Cursor-Bewegungen oder Telemetrie. Eine verspätete Nachricht ist dort nichts mehr wert, und neue Daten sollen nicht auf die erneute Übertragung alter Pakete warten.
Wurde keine Zeitgrenze angegeben, ist der Wert null. Dann ist der Kanal entweder zuverlässig (Standard) oder er begrenzt stattdessen über maxRetransmits die Anzahl der Wiederholungen. Beide Optionen schließen sich gegenseitig aus.
Rückgabewert
null, wenn beim Erstellen keine maxPacketLifeTime angegeben wurde.Beispiele
Unzuverlässigen Kanal mit Zeitgrenze erstellen
const pc = new RTCPeerConnection();
// Positionsdaten: nach 150 ms nicht mehr erneut senden
const channel = pc.createDataChannel('positionen', {
ordered: false,
maxPacketLifeTime: 150
});
console.log(channel.maxPacketLifeTime);
console.log(channel.maxRetransmits);
console.log(channel.reliable ?? 'reliable wird nicht unterstützt');
Standardkanal ohne Zeitgrenze
const pc = new RTCPeerConnection();
const chat = pc.createDataChannel('chat');
// Zuverlässiger Kanal: keine Zeitgrenze gesetzt
console.log(chat.maxPacketLifeTime);
Zuverlässigkeitsmodus eines empfangenen Kanals auswerten
const pc = new RTCPeerConnection();
const describeReliability = (ch) => {
if (ch.maxPacketLifeTime !== null) {
return `unzuverlässig, max. ${ch.maxPacketLifeTime} ms`;
}
if (ch.maxRetransmits !== null) {
return `unzuverlässig, max. ${ch.maxRetransmits} Wiederholungen`;
}
return 'zuverlässig';
};
// Kanal, den die Gegenseite geöffnet hat
pc.addEventListener('datachannel', ({ channel }) => {
console.log(`${channel.label}: ${describeReliability(channel)}`);
});
// Wichtig · Fallstricke
- Nur lesbar: Der Wert lässt sich nach dem Erstellen des Kanals nicht mehr ändern. Er muss beim Aufruf von
createDataChannel()festgelegt werden. - Gegenseitiger Ausschluss: Wer
maxPacketLifeTimeundmaxRetransmitsgleichzeitig angibt, bekommt voncreateDataChannel()einenTypeError. - Wertebereich: Werte über 65535 werden vom Browser auf das Maximum begrenzt. Der zurückgelesene Wert kann also kleiner sein als der angegebene.
- Keine Zustellungsgarantie: Nach Ablauf der Zeit werden Nachrichten ohne Hinweis verworfen. Es gibt kein Ereignis für verlorene Nachrichten. Wichtige Daten (z. B. Chat-Nachrichten oder Dateien) gehören in einen zuverlässigen Kanal.
- Die Zeitgrenze gilt pro Nachricht ab dem Sendeversuch, nicht für die Laufzeit des Kanals. Sie ergibt meist zusammen mit
ordered: falseSinn, damit verlorene Pakete neuere nicht aufhalten. - Kompatibilität: Ältere Chrome-Versionen boten stattdessen die nicht standardisierte Eigenschaft
maxRetransmitTimean. Die veraltete Eigenschaftreliablesollte man nicht mehr verwenden.