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

瀏覽器相容性

另見