WebTransportDatagramDuplexStream

有限可用性

此功能并非基线功能,因为它在一些使用最广泛的浏览器中无法使用。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

注意:此功能在Web 工作线程中可用。

WebTransportDatagramDuplexStreamWebTransport 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
# 双向流

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅