RTCDataChannel: bufferedAmount 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

只读 RTCDataChannel 属性 bufferedAmount 返回当前已排队等待通过数据通道发送的数据字节数。由于调用 send() 方法,队列可能会增加。这仅包括用户代理本身缓冲的数据;不包括任何帧开销或操作系统或网络硬件执行的缓冲。

用户代理可以选择以任何方式实现实际发送数据的过程;这可能在事件循环期间定期执行,或者真正异步执行。随着消息的实际发送,此值会相应地减少。

注意: 关闭数据通道不会重置此计数,即使用户代理会清除排队的消息。但是,即使在关闭通道后,尝试发送消息也会继续增加 bufferedAmount 值,尽管消息既未发送也未缓冲。

每当此值减少到等于或低于 bufferedAmountLowThreshold 属性中指定的值时,用户代理就会触发 bufferedamountlow 事件。例如,此事件可用于实现一种代码,该代码在有空间缓冲消息时会排队发送更多消息。

当前已排队等待通过数据通道发送但尚未发送的数据字节数。

示例

下面的代码片段包含一个函数,该函数会将 ID 为“bufferSize”的块的内容更改为一个字符串,该字符串指示 RTCDataChannel 上当前缓冲的字节数。

js
const dc = peerConnection.createDataChannel("File Transfer");

// …

function showBufferedAmount(channel) {
  const el = document.getElementById("bufferSize");

  el.innerText = `${channel.bufferedAmount} bytes`;
}

规范

规范
WebRTC:浏览器中的实时通信
# dom-datachannel-bufferedamount

浏览器兼容性

另见