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日 |
643 在 网络编程 中排名
3,223 每月下载
在 12 个包中使用 (通过 wtransport)
190KB
4.5K SLoC
WTransport
WebTransport 协议,纯 Rust,适合异步。
简介
WebTransport 是一种正在开发中的新协议,旨在通过网络在客户端和服务器之间实现低延迟、双向通信。它旨在通过提供更高效、更灵活的传输层来解决现有协议(如 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 的使用。
您可以使用 Rust 的包管理器 Cargo,使用以下命令运行此示例
cargo run --example full
此示例启动了一个 echo WebTransport 服务器,可以接收消息。它还包括一个集成的 HTTP 服务器。
打开 Google Chrome 并导航到页面 http://127.0.0.1:8080。
示例
其他语言
WTransport 为以下语言提供了绑定
- Elixir: wtransport-elixir
依赖项
~1.5–2.3MB
~73K SLoC