WebTransport
注意:此功能在 Web Workers 中可用。
WebTransport 介面是 WebTransport API 的一部分,它提供了使用者代理連線到 HTTP/3 伺服器、在任一方向或雙向發起可靠和不可靠傳輸,並在不再需要連線時關閉連線的功能。
建構函式
WebTransport()-
建立一個新的
WebTransport物件例項。
例項屬性
closed只讀-
返回一個在傳輸關閉時解析的 Promise。
datagrams只讀-
返回一個可用於傳送和接收資料報的
WebTransportDatagramDuplexStream例項。 congestionControl只讀 實驗性-
返回一個字串,指示應用程式在傳送資料時偏好高吞吐量或低延遲。
incomingBidirectionalStreams只讀-
表示伺服器開啟的一個或多個雙向流。返回一個
WebTransportBidirectionalStream物件的ReadableStream。每個物件都可用於從伺服器讀取資料並將其寫回伺服器。 incomingUnidirectionalStreams只讀-
表示伺服器開啟的一個或多個單向流。返回一個
WebTransportReceiveStream物件的ReadableStream。每個物件都可用於從伺服器讀取資料。 ready只讀-
返回一個在傳輸準備好使用時解析的 Promise。
reliability只讀 實驗性-
返回一個字串,指示連線是否僅支援可靠傳輸,或者是否也支援不可靠傳輸(如 UDP)。
例項方法
close()-
關閉正在進行的 WebTransport 會話。
createBidirectionalStream()-
非同步開啟一個雙向流(
WebTransportBidirectionalStream),可用於與伺服器讀寫。 createUnidirectionalStream()-
非同步開啟一個單向流(
WritableStream),可用於向伺服器寫入資料。 getStats()實驗性-
非同步返回一個
Promise,該 Promise 會解析為一個包含 HTTP/3 連線統計資訊的物件。
示例
下面的示例程式碼顯示瞭如何透過將 HTTP/3 伺服器的 URL 傳遞給 WebTransport() 建構函式來連線到該伺服器。請注意,方案必須是 HTTPS,並且必須顯式指定埠號。一旦 WebTransport.ready Promise 解析,您就可以開始使用連線了。
async function initTransport(url) {
// Initialize transport connection
const transport = new WebTransport(url);
// The connection can be used once ready fulfills
await transport.ready;
return transport;
}
您可以透過等待 WebTransport.closed Promise 解析來響應連線關閉。WebTransport 操作返回的錯誤是 WebTransportError 型別,並且在標準的 DOMException 集之上包含附加資料。
下面的 closeTransport() 方法展示了一種可能的實現。在 try...catch 塊中,它使用 await 等待 closed Promise 解析或拒絕,然後報告連線是故意關閉還是由於錯誤關閉。
async function closeTransport(transport) {
// Respond to connection closing
try {
await transport.closed;
console.log(`The HTTP/3 connection to ${url} closed gracefully.`);
} catch (error) {
console.error(`The HTTP/3 connection to ${url} closed due to ${error}.`);
}
}
我們可以將上述非同步函式呼叫放在它們自己的非同步函式中,如下所示。
// Use the transport
async function useTransport(url) {
const transport = await initTransport(url);
// Use the transport object to send and receive data
// …
// When done, close the transport
await closeTransport(transport);
}
const url = "https://example.com:4999/wt";
useTransport(url);
有關其他示例程式碼,請參閱各個屬性和方法頁面。
規範
| 規範 |
|---|
| WebTransport # web-transport |
瀏覽器相容性
載入中…