RTCDataChannel: bufferedamountlow 事件
当 RTCDataChannel 的出站数据传输缓冲区中当前字节数(bufferedAmount)从高于或等于 bufferedAmountLowThreshold 中指定的阈值下降到低于或等于该阈值时,会向 RTCDataChannel 发送一个 bufferedamountlow 事件。
此事件不可取消,也不会冒泡。
语法
在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。
js
addEventListener("bufferedamountlow", (event) => { })
onbufferedamountlow = (event) => { }
事件类型
一个通用的 Event。
示例
此示例设置了 bufferedamountlow 的处理程序,以便在数据通道的缓冲区下降到低于我们设定的 65536 字节(即 64kB)的 bufferedAmountLowThreshold 指定的字节数时,请求更多数据。换句话说,我们将尝试在缓冲区中至少保留 64kB 的数据,并一次从源读取 64kB。
js
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;
pc.addEventListener("bufferedamountlow", (ev) => {
if (source.position <= source.length) {
dc.send(source.readFile(65536));
}
});
创建 RTCPeerConnection 后,调用 RTCPeerConnection.createDataChannel() 来创建数据通道。然后,为 bufferedamountlow 创建一个监听器,以便在传入数据缓冲区的字节数低于 65536 字节时,随时重新填充缓冲区。
您也可以使用事件处理属性 onbufferedamountlow 来设置 bufferedamountlow 的监听器。
js
pc.onbufferedamountlow = (ev) => {
if (source.position <= source.length) {
dc.send(source.readFile(65536));
}
};
规范
| 规范 |
|---|
| WebRTC:浏览器中的实时通信 # event-datachannel-bufferedamountlow |
| WebRTC:浏览器中的实时通信 # dom-rtcdatachannel-onbufferedamountlow |
浏览器兼容性
加载中…