WebTransport

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 WebTransport của WebTransport API cung cấp chức năng cho phép một user agent kết nối tới máy chủ HTTP/3, khởi tạo truyền dữ liệu đáng tin cậy và không đáng tin cậy theo một hoặc cả hai hướng, và đóng kết nối khi không còn cần nữa.

Constructor

WebTransport()

Tạo một thể hiện đối tượng WebTransport mới.

Thuộc tính thể hiện

closed Read only

Trả về một promise được giải quyết khi transport được đóng.

datagrams Read only

Trả về một thể hiện WebTransportDatagramDuplexStream có thể dùng để gửi và nhận datagram.

congestionControl Read only

Trả về một chuỗi cho biết mức ưu tiên của ứng dụng đối với thông lượng cao hoặc độ trễ thấp khi gửi dữ liệu.

incomingBidirectionalStreams Read only

Đại diện cho một hoặc nhiều luồng hai chiều do máy chủ mở. Trả về một ReadableStream của các đối tượng WebTransportBidirectionalStream. Mỗi đối tượng có thể được dùng để đọc dữ liệu từ máy chủ và ghi dữ liệu trở lại máy chủ.

incomingUnidirectionalStreams Read only

Đại diện cho một hoặc nhiều luồng một chiều do máy chủ mở. Trả về một ReadableStream của các đối tượng WebTransportReceiveStream. Mỗi đối tượng có thể được dùng để đọc dữ liệu từ máy chủ.

ready Read only

Trả về một promise được giải quyết khi transport sẵn sàng để dùng.

reliability Read only

Trả về một chuỗi cho biết kết nối chỉ hỗ trợ transport đáng tin cậy hay còn hỗ trợ cả transport không đáng tin cậy, như UDP.

Phương thức thể hiện

close()

Đóng một phiên WebTransport đang diễn ra.

createBidirectionalStream()

Mở bất đồng bộ một luồng hai chiều (WebTransportBidirectionalStream) có thể dùng để đọc từ và ghi tới máy chủ.

createUnidirectionalStream()

Mở bất đồng bộ một luồng một chiều (WritableStream) có thể dùng để ghi tới máy chủ.

getStats()

Trả về bất đồng bộ một Promise được giải quyết với một object chứa thống kê kết nối HTTP/3.

Ví dụ

Đoạn mã ví dụ dưới đây cho thấy cách kết nối tới máy chủ HTTP/3 bằng cách truyền URL của nó vào constructor WebTransport(). Lưu ý rằng scheme phải là HTTPS và số cổng phải được chỉ định rõ ràng. Khi promise WebTransport.ready được giải quyết, bạn có thể bắt đầu dùng kết nối.

js
async function initTransport(url) {
  // Khởi tạo kết nối transport
  const transport = new WebTransport(url);

  // Kết nối có thể dùng được khi ready được giải quyết
  await transport.ready;
  return transport;
}

Bạn có thể phản ứng khi kết nối đóng bằng cách chờ promise WebTransport.closed được giải quyết. Các lỗi do thao tác WebTransport trả về có kiểu WebTransportError, và chứa thêm dữ liệu ngoài tập DOMException tiêu chuẩn.

Phương thức closeTransport() bên dưới cho thấy một cách triển khai có thể dùng. Trong một khối try...catch, nó dùng await để chờ promise closed được giải quyết hoặc bị từ chối, rồi báo cáo xem kết nối đã đóng một cách chủ ý hay do lỗi.

js
async function closeTransport(transport) {
  // Phản hồi khi kết nối đóng
  try {
    await transport.closed;
    console.log(`Kết nối HTTP/3 tới ${url} đã đóng êm thấm.`);
  } catch (error) {
    console.error(`Kết nối HTTP/3 tới ${url} đã đóng do ${error}.`);
  }
}

Ta có thể gọi các hàm bất đồng bộ ở trên trong chính một hàm bất đồng bộ khác, như minh họa dưới đây.

js
// Dùng transport
async function useTransport(url) {
  const transport = await initTransport(url);

  // Dùng đối tượng transport để gửi và nhận dữ liệu
  // …

  // Khi xong, đóng transport
  await closeTransport(transport);
}

const url = "https://example.com:4999/wt";
useTransport(url);

Để xem mã ví dụ khác, hãy xem các trang thuộc tính và phương thức riêng lẻ.

Thông số kỹ thuật

Specification
WebTransport
# web-transport

Tương thích trình duyệt

Xem thêm