RTCDataChannel: bufferedamountlow event
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Abufferedamountlow
event is sent to anRTCDataChannel
when the number of bytes currently in the outbound data transfer buffer falls below the threshold specified inbufferedAmountLowThreshold
.bufferedamountlow
events aren't sent ifbufferedAmountLowThreshold
is 0.
This event is not cancelable and does not bubble.
Syntax
Use the event name in methods likeaddEventListener()
, or set an event handler property.
addEventListener("bufferedamountlow", (event) => { })onbufferedamountlow = (event) => { }
Event type
A genericEvent
.
Examples
This example sets up a handler forbufferedamountlow
to request more data any time the data channel's buffer falls below the number of bytes specified bybufferedAmountLowThreshold
, 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 objectlet source = (dc.bufferedAmountLowThreshold = 65536);pc.addEventListener( "bufferedamountlow", (ev) => { if (source.position <= source.length) { dc.send(source.readFile(65536)); } }, false,);
After creating theRTCPeerConnection
, this callsRTCPeerConnection.createDataChannel()
to create the data channel. Then a listener is created forbufferedamountlow
to refill the incoming data buffer any time its contents fall below 65536 bytes.
You can also set up a listener forbufferedamountlow
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 |