WebTransport 是 Websockets 的现代升级版,使用 http3 在客户端和服务器之间传输数据。
WTransport 是用 Rust 编写的 http3 WebTransport 实现。
GitHub地址:https://github.com/BiagioFesta/wtransport
WebTransport 的优势:
- 低延迟: WebTransport 的设计旨在最大限度地减少延迟,使其适用于游戏、视频流和协作编辑等实时应用。
- 双向通信: WebTransport 允许客户端和服务器之间同时进行数据交换,无需多次请求即可实现高效的来回通信。
- 多路复用: 利用 WebTransport,可以在单个连接上复用多个数据流,从而减少开销并提高性能。
- 安全性: WebTransport 受益于网络平台提供的安全功能,包括传输加密和同源策略。
WTransport 的简单 API
WTransport 有服务器和客户端两种实现方式。具体如下:
- 服务器
#[tokio::main]
async fn main() -> Result<()> {
let config = ServerConfig::builder()
.with_bind_default(4433)
.with_certificate(certificate)
.build();
let connection = Endpoint::server(config)?
.accept()
.await // Awaits connection
.await? // Awaits session request
.accept() // Accepts request
.await?; // Awaits ready session
let stream = connection.accept_bi().await?;
// ...
}
- 客户端
#[tokio::main]
async fn main() -> Result<()> {
let config = ClientConfig::default();
let connection = Endpoint::client(config)?
.connect("https://[::1]:4433")
.await?;
let stream = connection.open_bi().await?.await?;
// ...
}
开始
GitHub 中有一个完整的示例,你可以在其中启动一个服务器和一个 Chrome 浏览器实例,通过 h3 WebTransport 协议相互通信。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/im/37243.html