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.
Abufferedamountlow event is sent to anRTCDataChannel when the number of bytes currently in the outbound data transfer buffer (bufferedAmount) falls from above to below or equal the threshold specified inbufferedAmountLowThreshold.
This event is not cancelable and does not bubble.
In this article
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");// Replace with your own source object, such as a file handlelet source = null;dc.bufferedAmountLowThreshold = 65536;pc.addEventListener("bufferedamountlow", (ev) => { if (source.position <= source.length) { dc.send(source.readFile(65536)); }});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> |