WebTransportDatagramDuplexStream
注意:此功能在Web 工作线程中可用。
WebTransportDatagramDuplexStream
是WebTransport API 的一个接口,它表示一个双向流,可用于在客户端和服务器之间进行不可靠的数据报传输。它提供对用于读取传入数据报的ReadableStream
、用于写入传出数据报的WritableStream
以及与该流相关的各种设置和统计信息的访问权限。
可通过WebTransport.datagrams
属性访问它。
“不可靠”意味着无法保证数据传输,也无法保证按特定顺序到达。这在某些情况下是可以的,并且可以提供非常快的交付速度。例如,您可能希望传输定期游戏状态更新,其中每个消息都取代到达的最后一个消息,并且顺序并不重要。
实例属性
incomingHighWaterMark
-
获取或设置传入数据块的高水位线——这是传入
ReadableStream
的内部队列在被视为已满之前可以达到的最大大小(以块为单位)。有关更多信息,请参见内部队列和排队策略。 incomingMaxAge
-
获取或设置传入数据报的最大生存时间(以毫秒为单位)。如果未设置最大生存时间,则返回
null
。 maxDatagramSize
只读-
返回可以写入
writable
的传出数据报的最大允许大小(以字节为单位)。 outgoingHighWaterMark
-
获取或设置传出数据块的高水位线——这是传出
WritableStream
的内部队列在被视为已满之前可以达到的最大大小(以块为单位)。有关更多信息,请参见内部队列和排队策略。 outgoingMaxAge
-
获取或设置传出数据报的最大生存时间(以毫秒为单位)。如果未设置最大生存时间,则返回
null
。 readable
只读-
返回一个
ReadableStream
实例,可用于从该流中读取传入数据报。 writable
只读-
返回一个
WritableStream
实例,可用于将传出数据报写入该流。
示例
写入传出数据报
writable
属性返回一个WritableStream
对象,您可以使用写入器将数据写入该对象,以便将其传输到服务器
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
对象,您可以使用它从服务器接收数据
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 表仅在浏览器中加载