WebTransportBidirectionalStream
Baseline
2026
*
Newly available
Since March 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Giao diện WebTransportBidirectionalStream của WebTransport API đại diện cho một luồng hai chiều được tạo bởi máy chủ hoặc máy khách có thể được sử dụng để truyền tải đáng tin cậy. Cung cấp quyền truy cập vào một WebTransportReceiveStream để đọc dữ liệu đến và một WebTransportSendStream để ghi dữ liệu đi.
Thuộc tính phiên bản
readableRead only-
Trả về một phiên bản
WebTransportReceiveStreamcó thể được sử dụng để đọc dữ liệu đến. writableRead only-
Trả về một phiên bản
WebTransportSendStreamcó thể được sử dụng để ghi dữ liệu đi.
Ví dụ
>Truyền hai chiều được khởi tạo bởi user agent
Để mở một luồng hai chiều từ một user agent, bạn sử dụng phương thức WebTransport.createBidirectionalStream() để lấy tham chiếu đến một WebTransportBidirectionalStream. Các thuộc tính readable và writable trả về các tham chiếu đến các phiên bản WebTransportReceiveStream và WebTransportSendStream. Chúng kế thừa từ ReadableStream và WritableStream tương ứng, và có thể được sử dụng để đọc từ và ghi vào máy chủ.
async function setUpBidirectional() {
const stream = await transport.createBidirectionalStream();
// stream is a WebTransportBidirectionalStream
// stream.readable is a WebTransportReceiveStream
const readable = stream.readable;
// stream.writable is a WebTransportSendStream
const writable = stream.writable;
// …
}
Đọc từ WebTransportReceiveStream có thể được thực hiện theo cách tương tự như bạn đọc một ReadableStream:
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);
}
}
Và ghi vào WebTransportSendStream có thể được thực hiện như sau:
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);
}
Truyền hai chiều được khởi tạo bởi máy chủ
Nếu máy chủ mở một luồng hai chiều để truyền dữ liệu đến và nhận từ máy khách, điều này có thể được truy cập qua thuộc tính WebTransport.incomingBidirectionalStreams, trả về một ReadableStream của các đối tượng WebTransportBidirectionalStream. Mỗi cái có thể được sử dụng để đọc và ghi các phiên bản Uint8Array như được hiển thị ở trên. Tuy nhiên, bạn cần một hàm ban đầu để đọc luồng hai chiều:
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);
}
}
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebTransport> # webtransportbidirectionalstream> |