RTCDataChannel: bufferedamountlow event
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.
A bufferedamountlow
event is sent to an RTCDataChannel
when the number of bytes currently in the outbound data transfer buffer falls below the threshold specified in bufferedAmountLowThreshold
. bufferedamountlow
events aren't sent if bufferedAmountLowThreshold
is 0.
This event is not cancelable and does not bubble.
Syntax
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener("bufferedamountlow", (event) => {});
onbufferedamountlow = (event) => {};
Event type
A generic Event
.
Examples
This example sets up a handler for bufferedamountlow
to request more data any time the data channel's buffer falls below the number of bytes specified by bufferedAmountLowThreshold
, which we have set to 65536. In other words, we'll try to keep at least 64kB of data in the buffer, reading 64kB at a time from the source.
let pc = new RTCPeerConnection();
let dc = pc.createDataChannel("SendFile");
// source data object
let source = (dc.bufferedAmountLowThreshold = 65536);
pc.addEventListener(
"bufferedamountlow",
(ev) => {
if (source.position <= source.length) {
dc.send(source.readFile(65536));
}
},
false,
);
After creating the RTCPeerConnection
, this calls RTCPeerConnection.createDataChannel()
to create the data channel. Then a listener is created for bufferedamountlow
to refill the incoming data buffer any time its contents fall below 65536 bytes.
You can also set up a listener for bufferedamountlow
using its event handler property, onbufferedamountlow
:
pc.onbufferedamountlow = (ev) => {
if (source.position <= source.length) {
dc.send(source.readFile(65536));
}
};
Specifications
Specification |
---|
WebRTC: Real-Time Communication in Browsers # event-datachannel-bufferedamountlow |
WebRTC: Real-Time Communication in Browsers # dom-rtcdatachannel-onbufferedamountlow |
Browser compatibility
BCD tables only load in the browser