无需登录 数据私有 本地保存

WebTransport API 演示 - 基于 QUIC 的数据报发送

10
0
0
0

WebTransport API 演示

基于 QUIC 协议的数据报 (Datagram) 发送与接收
未连接
连接配置
需要支持 HTTP/3 (QUIC) 的服务器
模拟模式:无需服务器,本地回环演示
传输统计
0
已发送数据报
0
已接收数据报
0
发送字节
-
平均延迟 (ms)
连接时长: 00:00
快速模板
发送数据报
字节数: 20 超过QUIC数据报推荐大小 (~1200B) 输入模式: 文本
接收消息
暂无接收消息。发送数据报后将在此显示回显。
事件日志
--:--:-- 系统 WebTransport 演示工具已就绪。模拟模式已启用。
API 使用示例 (JavaScript)
// 建立 WebTransport 连接 const wt = new WebTransport('https://server:4433/wt'); await wt.ready; // 获取数据报写入器 const writer = wt.datagrams.writable.getWriter(); const encoder = new TextEncoder(); await writer.write(encoder.encode('Hello QUIC!')); writer.releaseLock();
// 接收数据报 const reader = wt.datagrams.readable.getReader(); const decoder = new TextDecoder(); while (true) { const { value, done } = await reader.read(); if (done) break; console.log(decoder.decode(value)); } // 关闭连接 wt.close();
常见问题 (FAQ)

WebTransport 是 W3C 标准化的新型浏览器 API,基于 QUIC (HTTP/3) 协议。相比 WebSocket,它支持多路复用(多个流同时传输互不阻塞)、不可靠数据报(类似 UDP,适合实时游戏/直播)、无序交付和更低的连接建立延迟。WebTransport 专为低延迟场景设计,如云游戏、实时协作、IoT 遥测等。

特性WebTransportWebSocket
传输协议QUIC (UDP-based)TCP
多路复用✅ 原生支持多流❌ 需自行实现
数据报模式✅ 不可靠/无序❌ 不支持
队头阻塞✅ 无队头阻塞❌ TCP队头阻塞
连接迁移✅ 网络切换不断连❌ 需重建连接
0-RTT 重连✅ 支持❌ 不支持

目前 Chrome 97+Edge 97+Opera 83+ 已支持 WebTransport。Firefox 和 Safari 仍在开发中。需要安全上下文(HTTPS 或 localhost)才能使用。可通过 'WebTransport' in window 检测浏览器支持。

QUIC 数据报的有效载荷通常限制在约 1200 字节(取决于路径 MTU)。超过此限制的数据报可能被丢弃或需要 IP 分片。对于大块数据,建议使用 WebTransport 的流 (Stream) 模式,流提供可靠的、有序的传输,无大小限制。

数据报 (Datagram):不可靠、无序、大小受限(~1200B),适合实时状态更新、游戏同步、传感器数据,丢失个别包不影响整体。
流 (Stream):可靠、有序、无大小限制,适合文件传输、消息队列、需要完整性的数据。WebTransport 同时支持单向流和双向流,多个流之间独立传输,互不阻塞。

可使用支持 HTTP/3 和 WebTransport 的服务器:aioquic (Python)、quic-go (Go)、quiche (Rust/C)、Google's webtransport 参考实现。服务器需要配置 TLS 证书(Let's Encrypt 可用),监听 UDP 端口(通常 4433),并处理 WebTransport 会话的握手。建议先用 webtransport.day 等公共测试服务验证客户端代码。

云游戏(低延迟输入/视频帧)、实时多人游戏同步、直播弹幕/互动、IoT 设备遥测、协作编辑、金融行情推送、视频监控流、无人机控制等对延迟敏感且能容忍少量丢包的场景。数据报模式特别适合高频小数据包传输。

WebTransport 基于 QUIC,内建 TLS 1.3 加密,所有数据(包括数据报和流)都经过加密传输。浏览器强制要求安全上下文(HTTPS 或 localhost)。服务器需要有效的 TLS 证书。此外,QUIC 的包级别加密使得中间设备无法窥探或篡改内容。