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 字节时重新填充缓冲区。

您也可以使用其事件处理程序属性 onbufferedamountlowbufferedamountlow 设置监听器。

js
pc.onbufferedamountlow = (ev) => {
  if (source.position <= source.length) {
    dc.send(source.readFile(65536));
  }
};

规范

规范
WebRTC:浏览器中的实时通信
# event-datachannel-bufferedamountlow
WebRTC:浏览器中的实时通信
# dom-rtcdatachannel-onbufferedamountlow

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅