20 个版本 (8 个重大更改)
0.9.1 | 2024年4月26日 |
---|---|
0.9.0 | 2024年3月31日 |
0.8.0 | 2024年3月22日 |
0.7.0 | 2023年12月21日 |
0.4.2 | 2023年7月21日 |
#2157 in 网络编程
每月99 次下载
115KB
2.5K SLoC
webtransport-quinn
已重命名为 web-transport-quinn. 是的,我添加了一个连字符。
lib.rs
:
WebTransport 是一种在 QUIC 上进行客户端-服务器通信的协议。它作为 HTTP 和 WebSocket 的替代方案,在浏览器中可用。
WebTransport 建立在 HTTP/3 之上,而 HTTP/3 又建立在 QUIC 之上。这个库隐藏了这些细节,并尝试仅公开 QUIC API,尽可能地将工作委托给底层实现。有关更多信息,请参阅Quinn 文档。
QUIC 提供了两个主要 API
流
QUIC 流是有序、可靠、流量控制的,可选的双向流。两个端点都可以创建和关闭流(包括错误代码),没有额外开销。您可以将它们视为 TCP 连接,但它们共享单个 QUIC 连接。
数据报
QUIC 数据报是无序、不可靠且不受流量控制的。两个端点都可以发送小于 MTU 大小(至少 1.2kb)的数据报,它们可能会乱序到达或根本不到达。它们基本上是 UDP 数据包,但它们是加密的,并且受拥塞控制。
限制
WebTransport 可以与 HTTP/3 和多个 WebTransport 会话一起池化。这个 crate 避免了这种复杂性,仅执行最小操作以支持单个拥有整个 QUIC 连接的 WebTransport 会话。如果您想在同一主机/端口上支持 HTTP/3,应使用另一个 crate(例如 h3-webtransport
)。如果您想在同一 QUIC 连接上支持多个 WebTransport 会话,请只需拨一个新的 QUIC 连接即可。
依赖项
~6–19MB
~220K SLoC