moq-dev/web-transport · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
WebTransport
WebTransport 是一个新的 Web API,允许客户端与服务器之间进行低层级的双向通信。 它在浏览器中可用,作为 HTTP 和 WebSockets 的替代方案。
WebTransport 构建在 HTTP/3 之上,而 HTTP/3 又构建在 QUIC 之上。 本库隐藏了这些细节,并尝试仅暴露 QUIC API,尽可能将工作委托给底层的 QUIC 实现。
QUIC 提供两个主要 API:
Streams
QUIC 流是有序的、可靠的、流量控制的,并且可选地支持双向通信。 两端都可以创建和关闭流(包括错误码),且没有额外开销。 你可以将它们视为 TCP 连接,但它们共享在单个 QUIC 连接之上。
Datagrams
QUIC 数据报是无序的、不可靠的,且不受流量控制。 两端都可以发送小于 MTU 大小(最小约 1.2kb)的数据报,它们可能会乱序到达或完全丢失。 它们基本上是 UDP 数据包,区别在于它们经过加密并受拥塞控制。
Crates
本项目被拆分为许多不同的 crate:
- web-transport 提供了一个通用接口,根据平台委托给 web-transport-quinn 或 web-transport-wasm。
- web-transport-quinn 镜像了 Quinn API,抽象了 HTTP/3 的设置。
- web-transport-noq 镜像了 Noq API,这是一个具有相同接口范围的 Quinn 分支。
- web-transport-wasm 封装了 browser API
- web-transport-ffi 通过 UniFFI 为 Python、Kotlin 和 Swift 暴露 WebTransport 客户端/服务器。
- qmux 在 TCP/TLS/WebSocket 上实现了 QMux (draft-ietf-quic-qmux),并兼容旧版 WebTransport-over-WebSocket 线格式。
- web-transport-trait 定义了一个异步 trait,目前由 web-transport-quinn 和 qmux 实现。
- web-transport-proto 是一个最小化的 HTTP/3 实现,仅用于建立 WebTransport 会话。
语言绑定
通过 UniFFI 从 rs/web-transport-ffi 构建;所有三个发布工作流均由单个 web-transport-ffi-v* 标签触发。
| 语言 | 包 | 来源 |
|---|---|---|
| Python | web-transport-rs (PyPI) | py/web-transport |
| Kotlin | dev.moq:web-transport (Maven Central) | kt/ |
| Swift | WebTransportFFI.xcframework.zip (附加在 GitHub Releases 中) | swift/ |