WebTransportDatagramDuplexStream

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

WebTransportDatagramDuplexStream 介面是 WebTransport API 的一部分,它代表一個雙工流,可用於客戶端和伺服器之間不可靠的資料報傳輸。它提供了對用於讀取傳入資料報的 ReadableStream、用於寫入傳出資料報的 WritableStream 以及與流相關的各種設定和統計資訊的訪問許可權。

透過 WebTransport.datagrams 屬性訪問此介面。

“不可靠”意味著資料傳輸不被保證,也不會按特定順序到達。在某些情況下,這沒問題,而且可以提供非常快速的傳輸。例如,您可能希望傳輸定期的遊戲狀態更新,其中每個訊息都會覆蓋最後一個到達的訊息,並且順序不重要。

例項屬性

incomingHighWaterMark

獲取或設定傳入資料塊的高水位標記 — 這是傳入 ReadableStream 內部佇列在被認為已滿之前可以達到的最大塊數。有關更多資訊,請參閱 內部佇列和佇列策略

incomingMaxAge

獲取或設定傳入資料報的最大年齡(以毫秒為單位)。如果未設定最大年齡,則返回 null

maxDatagramSize 只讀

返回可以寫入 writable 的傳出資料報的最大允許大小(以位元組為單位)。

outgoingHighWaterMark

獲取或設定傳出資料塊的高水位標記 — 這是傳出 WritableStream 內部佇列在被認為已滿之前可以達到的最大塊數。有關更多資訊,請參閱 內部佇列和佇列策略

outgoingMaxAge

獲取或設定傳出資料報的最大年齡(以毫秒為單位)。如果未設定最大年齡,則返回 null

readable 只讀

返回一個 ReadableStream 例項,可用於從流中讀取傳入的資料報。

writable 只讀 已棄用

返回一個 WritableStream 例項,可用於將傳出資料報寫入流。

示例

寫入傳出資料報

writable 屬性返回一個 WritableStream 物件,您可以使用編寫器向其寫入資料,以便傳輸到伺服器。

js
const writer = transport.datagrams.writable.getWriter();
const data1 = new Uint8Array([65, 66, 67]);
const data2 = new Uint8Array([68, 69, 70]);
writer.write(data1);
writer.write(data2);

讀取傳入資料報

readable 屬性返回一個 ReadableStream 物件,您可以使用它從伺服器接收資料。

js
async function readData() {
  const reader = transport.datagrams.readable.getReader();
  while (true) {
    const { value, done } = await reader.read();
    if (done) {
      break;
    }
    // value is a Uint8Array.
    console.log(value);
  }
}

規範

規範
WebTransport
# webtransportdatagramduplexstream

瀏覽器相容性

另見