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

浏览器兼容性

另见