WebTransport 浏览器支持
发布于 更新于
WebTransport 在客户端与服务器之间通过 HTTP/3 传输数据,既提供基于流的可靠传输, 也提供基于数据报(datagram)的不可靠、类 UDP 传输,二者共用一条连接。
浏览器与生态支持
Section titled “浏览器与生态支持”- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| Chrome (Desktop) | 支持 | 97 | 高 | 来源 | — |
| Chrome (Android) | 支持 | 97 | 高 | 来源 | 1 |
| Edge (Desktop) | 支持 | 97 | 高 | 来源 | 2 |
| Firefox (Desktop) | 支持 | 114 | 高 | 来源 | — |
| Firefox (Android) | 支持 | 114 | 高 | 来源 | 3 |
| Safari (macOS) | 支持 | 26.4 | 高 | 来源 | — |
| Safari (iOS) | 支持 | 26.4 | 高 | 来源 | 4 |
| Samsung Internet | 支持 | 18.0 | 高 | 来源 | 5 |
| WebView (Android) | 支持 | 97 | 高 | 来源 | 6 |
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- 由 browser-compat-data 镜像自 Firefox 的数据推导。
- 由 browser-compat-data 镜像自 Safari 的数据推导。
- 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
- 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
将服务器的 https URL 传给 WebTransport() 构造函数,然后等待 ready Promise
再使用该连接:
async function connect(url) { const transport = new WebTransport(url); await transport.ready; return transport;}如何在运行时检测
Section titled “如何在运行时检测”在创建连接之前,先检测 window 上是否存在 WebTransport。如果不存在,则回退为
使用 WebSocket 连接:
function openConnection(httpsUrl, wssUrl) { if ('WebTransport' in window) { return new WebTransport(httpsUrl); } return new WebSocket(wssUrl);}- 传给构造函数的 URL 必须使用
https协议。 - 数据报(通过
datagrams属性访问)是不可靠且无序的;仅在丢失或乱序消息可接受的场景 (例如定期的游戏状态更新)中使用。 - 当传输顺序和可靠性必须得到保证时,使用
createBidirectionalStream()或createUnidirectionalStream()。 - Safari 直到 Safari 26.4 才支持 WebTransport,弥合了此前该 API 事实上仅限于 Chromium 与 Firefox 的多年缺口——请勿假设它已普遍可用,务必参考上表核实。
← 返回兼容性浏览器。