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 |
浏览器兼容性
加载中…