RTCDataChannel: bufferedAmount-Eigenschaft
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 schreibgeschützte RTCDataChannel
-Eigenschaft bufferedAmount
gibt die Anzahl von Bytes zurück, die derzeit zur Übertragung über den Datenkanal in der Warteschlange stehen. Die Warteschlange kann sich aufgrund von Aufrufen der send()
-Methode aufbauen. Dies umfasst nur Daten, die vom User Agent selbst gepuffert werden; es umfasst weder einen Rahmen-Overhead noch ein Puffern durch das Betriebssystem oder die Netzwerkausrüstung.
Der User Agent kann den tatsächlichen Sendevorgang auf beliebige Weise implementieren; dies kann periodisch während der Ereignisschleife oder tatsächlich asynchron geschehen. Während Nachrichten tatsächlich gesendet werden, wird dieser Wert entsprechend reduziert.
Hinweis:
Das Schließen des Datenkanals setzt diesen Zähler nicht zurück, obwohl der User Agent die Nachrichten in der Warteschlange löscht. Dennoch werden auch nach dem Schließen des Kanals weitere Versuche, Nachrichten zu senden, zum bufferedAmount
-Wert hinzugefügt, obwohl die Nachrichten weder gesendet noch gepuffert werden.
Jedes Mal, wenn dieser Wert auf oder unter den in der bufferedAmountLowThreshold
-Eigenschaft angegebenen Wert abfällt, löst der User Agent das bufferedamountlow
-Ereignis aus. Dieses Ereignis kann beispielsweise verwendet werden, um Code zu implementieren, der mehr Nachrichten in die Warteschlange stellt, sobald Raum vorhanden ist, um sie zu puffern.
Wert
Die Anzahl von Bytes von Daten, die derzeit zur Übertragung über den Datenkanal in der Warteschlange stehen, aber noch nicht gesendet wurden.
Beispiel
Der unten stehende Ausschnitt enthält eine Funktion, die den Inhalt eines Blocks mit der ID "bufferSize" in einen String ändert, der die Anzahl der derzeit auf einem RTCDataChannel
gepufferten Bytes angibt.
const dc = peerConnection.createDataChannel("File Transfer");
// …
function showBufferedAmount(channel) {
const el = document.getElementById("bufferSize");
el.innerText = `${channel.bufferedAmount} bytes`;
}
Spezifikationen
Specification |
---|
WebRTC: Real-Time Communication in Browsers # dom-datachannel-bufferedamount |
Browser-Kompatibilität
BCD tables only load in the browser