WebTransport: phương thức createBidirectionalStream()
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.
Phương thức createBidirectionalStream() của giao diện WebTransport mở bất đồng bộ và trả về một luồng hai chiều.
Phương thức trả về một Promise được giải quyết thành một đối tượng WebTransportBidirectionalStream, đối tượng này có các thuộc tính readable và writable có thể dùng để đọc và ghi dữ liệu tới máy chủ một cách đáng tin cậy.
"Đáng tin cậy" có nghĩa là việc truyền và thứ tự dữ liệu được bảo đảm.
Điều này mang lại khả năng phân phối chậm hơn (dù vẫn nhanh hơn WebSockets) so với datagrams, nhưng cần thiết trong các tình huống mà độ tin cậy và thứ tự là quan trọng, như ứng dụng chat.
Thứ tự tương đối mà các byte đang xếp hàng trong các luồng được tạo được xả có thể được chỉ định bằng tùy chọn sendOrder.
Nếu được đặt, các byte đang xếp hàng trong các luồng có sendOrder cao hơn sẽ được gửi trước các byte đang xếp hàng cho các luồng có sendOrder thấp hơn.
Nếu số thứ tự không được đặt, thứ tự gửi byte phụ thuộc vào triển khai.
Lưu ý rằng ngay cả khi byte từ các luồng có send order cao hơn được gửi trước, chúng vẫn có thể không đến trước.
Cú pháp
createBidirectionalStream()
createBidirectionalStream(options)
Tham số
optionsOptional-
Một object có thể có các thuộc tính sau:
sendOrderOptional-
Một giá trị số nguyên chỉ định độ ưu tiên gửi của luồng này so với các luồng khác có giá trị này được đặt. Các byte đang xếp hàng được gửi trước cho các luồng có giá trị cao hơn. Nếu không đặt, thứ tự gửi phụ thuộc vào triển khai.
Giá trị trả về
Một Promise được giải quyết thành một đối tượng WebTransportBidirectionalStream.
Ngoại lệ
InvalidStateErrorDOMException-
Được ném ra nếu
createBidirectionalStream()được gọi trong khi WebTransport đang đóng hoặc đã thất bại.
Ví dụ
Một hàm ban đầu được dùng để lấy tham chiếu tới các thuộc tính WebTransportBidirectionalStream.readable và WebTransportBidirectionalStream.writable. Đây là các tham chiếu tới các thể hiện WebTransportReceiveStream và WebTransportSendStream, tức các luồng đọc và ghi có thể dùng để đọc từ và ghi tới máy chủ.
async function setUpBidirectional() {
const stream = await transport.createBidirectionalStream({
sendOrder: "596996858",
});
// stream là một WebTransportBidirectionalStream
// stream.readable là một ReadableStream
const readable = stream.readable;
// stream.writable là một WritableStream
const writable = stream.writable;
// …
}
Việc đọc từ WebTransportReceiveStream có thể được thực hiện như sau:
async function readData(readable) {
const reader = readable.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) {
break;
}
// value là một Uint8Array.
console.log(value);
}
}
Và việc ghi vào WebTransportSendStream có thể làm 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);
}
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebTransport> # dom-webtransport-createbidirectionalstream> |