RTCDataChannel: bufferedamountlow 事件
当 RTCDataChannel
的出站数据传输缓冲区中的字节数低于 bufferedAmountLowThreshold
中指定的阈值时,会向该对象发送 bufferedamountlow
事件。如果 bufferedAmountLowThreshold
为 0,则不会发送 bufferedamountlow
事件。
此事件不可取消,也不会冒泡。
语法
在方法中(例如 addEventListener()
)使用事件名称,或设置事件处理程序属性。
js
addEventListener("bufferedamountlow", (event) => {});
onbufferedamountlow = (event) => {};
事件类型
一个通用的 Event
。
示例
此示例为 bufferedamountlow
设置了一个处理程序,以便在数据通道的缓冲区低于 bufferedAmountLowThreshold
指定的字节数时请求更多数据,我们将其设置为 65536。换句话说,我们将尝试在缓冲区中保留至少 64kB 的数据,一次从源读取 64kB。
js
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,
);
在创建 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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。