RTCDataChannel: bufferedamountlow-Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.
Ein bufferedamountlow-Ereignis wird an einen RTCDataChannel gesendet, wenn die Anzahl der Bytes im Puffer für ausgehende Datenübertragungen (bufferedAmount) von einem Wert oberhalb des in bufferedAmountLowThreshold festgelegten Schwellenwerts auf einen Wert fällt, der kleiner oder gleich diesem Schwellenwert ist.
Dieses Ereignis kann nicht abgebrochen werden und wird nicht durch die DOM-Hierarchie weitergegeben.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("bufferedamountlow", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onbufferedamountlow = (event) => { }
Ereignistyp
Ein generisches Event.
Beispiele
Dieses Beispiel richtet einen Handler für bufferedamountlow ein, der weitere Daten anfordert, sobald der Puffer des Datenkanals unter die in bufferedAmountLowThreshold angegebene Anzahl von Bytes fällt. Dieser Wert ist hier auf 65536 gesetzt. Mit anderen Worten: Wir versuchen, mindestens 64 kB Daten im Puffer zu halten, indem wir jeweils 64 kB aus der Quelle lesen.
let pc = new RTCPeerConnection();
let dc = pc.createDataChannel("SendFile");
// Replace with your own source object, such as a file handle
let source = null;
dc.bufferedAmountLowThreshold = 65536;
dc.addEventListener("bufferedamountlow", (ev) => {
if (source.position < source.length) {
dc.send(source.readFile(65536));
}
});
Nach dem Erstellen der RTCPeerConnection wird mit RTCPeerConnection.createDataChannel() der Datenkanal erstellt. Anschließend wird ein Listener für bufferedamountlow eingerichtet, der den Puffer für ausgehende Daten wieder auffüllt, sobald dessen Inhalt unter 65536 Bytes fällt.
Sie können einen Listener für bufferedamountlow auch über die Event-Handler-Eigenschaft onbufferedamountlow einrichten. Beachten Sie jedoch, dass dadurch andere mit onbufferedamountlow hinzugefügte Event-Listener gegebenenfalls ersetzt werden:
dc.onbufferedamountlow = (ev) => {
if (source.position < source.length) {
dc.send(source.readFile(65536));
}
};
Spezifikationen
| Spezifikation |
|---|
| WebRTC: Real-Time Communication in Browsers> # event-datachannel-bufferedamountlow> |
| WebRTC: Real-Time Communication in Browsers> # dom-rtcdatachannel-onbufferedamountlow> |