15个版本
0.1.14 | 2024年8月2日 |
---|---|
0.1.13 | 2024年5月5日 |
0.1.12 | 2024年3月27日 |
0.1.10 | 2023年12月23日 |
0.1.3 | 2023年7月15日 |
#146 in 网络编程
每月4,217次下载
在 11 个crate(8个直接)中使用
395KB
8K SLoC
WTransport
WebTransport 协议,纯Rust,异步友好。
简介
WebTransport是一种正在开发中的新协议,旨在通过Web在客户端和服务器之间实现低延迟、双向通信。它旨在通过提供一个更高效、更灵活的传输层来解决现有协议(如HTTP和WebSocket)的局限性。
WebTransport的优点
- 🚀 低延迟:WebTransport旨在最小化延迟,使其适用于游戏、视频流和协作编辑等实时应用。
- 🔄 双向通信:WebTransport允许客户端和服务器之间同时交换数据,无需多个请求即可实现高效的来回通信。
- 🔀 复用:使用WebTransport,可以在单个连接上复用多个流,从而减少开销并提高性能。
- 🔒 安全性:WebTransport得益于Web平台提供的功能,包括传输加密和同源策略。
- 🌐 原生浏览器支持:WebTransport在现代浏览器中得到原生支持,确保了Web应用的顺畅集成和性能提升。
注意
请注意,WebTransport仍然是一个草案,尚未标准化。《WTransport》库虽然功能齐全,但尚未完全适用于生产环境。应谨慎使用,并且可能会随着WebTransport规范的演变而进行更改。
简单的API
服务器 | 客户端 |
---|---|
|
|
浏览器集成
现代浏览器支持WebTransport ,增强了Web应用的能力。
例如,您可以使用以下JavaScript代码创建一个连接到Rust服务器的原生浏览器WebTransport客户端:
// Create a WebTransport instance connecting to the Rust server
let transport = new WebTransport('https://[::1]:4433');
await transport.ready;
// Create a bidirectional stream
let stream = await transport.createBidirectionalStream();
// Send data from the client to the server
await stream.writable.getWriter().write(new TextEncoder().encode("hello"));
// Read data reply from the server
let data = await stream.readable.getReader().read();
console.log(data);
查看W3C WebTransport API 文档以获取更多详情,并探索浏览器中WebTransport的完整功能。
入门指南
克隆仓库
git clone https://github.com/BiagioFesta/wtransport.git
cd wtransport/
运行Full
示例
examples/full.rs
是一个最小的但完整的服务器示例,展示了WebTransport的使用。
您可以使用以下命令使用Cargo,Rust的包管理器,运行此示例
cargo run --example full
此示例启动了一个echo WebTransport服务器,可以接收消息。它还包括一个集成的HTTP服务器。
打开Google Chrome并导航到页面http://127.0.0.1:8080。
示例
其他语言
WTransport为以下语言提供了绑定
- Elixir: wtransport-elixir
依赖项
~16–27MB
~511K SLoC