WebTransport:incomingBidirectionalStreams 属性

有限可用性

此功能不是基线,因为它在一些使用最广泛的浏览器中无法正常工作。

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

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

WebTransport接口的incomingBidirectionalStreams只读属性表示服务器打开的一个或多个双向流。返回一个包含WebTransportBidirectionalStream对象的ReadableStream。每个流都可以用于可靠地从服务器读取数据并向其写入数据。

“可靠”意味着数据传输和顺序得到保证。与datagrams相比,这提供速度较慢的传输(尽管比 WebSockets 快),但在可靠性和排序很重要的场景中是必要的,例如聊天应用程序。

示例

一个初始函数用于从ReadableStream中读取WebTransportBidirectionalStream对象。对于每个对象,WebTransportBidirectionalStream.readableWebTransportBidirectionalStream.writable值被传递给其他函数,以便从这些流中读取和写入数据。

js
async function receiveBidirectional() {
  const bds = transport.incomingBidirectionalStreams;
  const reader = bds.getReader();
  while (true) {
    const { done, value } = await reader.read();
    if (done) {
      break;
    }
    // value is an instance of WebTransportBidirectionalStream
    await readData(value.readable);
    await writeData(value.writable);
  }
}

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

async function writeData(writable) {
  const writer = writable.getWriter();
  const data1 = new Uint8Array([65, 66, 67]);
  const data2 = new Uint8Array([68, 69, 70]);
  writer.write(data1);
  writer.write(data2);
}

规范

规范
WebTransport
# dom-webtransport-incomingbidirectionalstreams

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参见