13个版本
0.6.0 | 2024年1月1日 |
---|---|
0.5.3 | 2022年9月17日 |
0.5.2 | 2022年3月14日 |
0.5.1 | 2021年5月3日 |
0.2.1 | 2019年6月2日 |
#402 in 网络编程
每月93次下载
在 6 个Crate中使用(通过 naia-server-socket)
105KB
2.5K SLoC
webrtc-unreliable
这是一个Rust库,允许您编写基于浏览器的客户端和UDP-like网络的游戏服务器。
此Crate并不旨在作为通用WebRTC数据通道系统,而是设计用于作为环境中UDP不可用的高级协议的底层UDP-like传输层。它提供了一个异步API,用于接受来自浏览器的WebRTC连接以及从多个客户端发送和接收WebRTC不可靠数据通道消息。
实现WebRTC所需的所有协议都是令人畏惧的。此Crate仅实现了支持不可靠、无序数据通道消息所需的最小WebRTC子集。由于WebRTC支持非常有限,此Crate不需要依赖于现有的重量级WebRTC实现,但因此协议支持极为有限。
您应该预期 仅 WebRTC数据通道功能,并且 仅 在不可靠、无序模式下工作。此外,WebRTC消息长度比完整WebRTC实现支持的长度更为严格。仅处理 未分段 的SCTP数据包,因此任何足够大的消息,足以导致SCTP数据包需要分段,都会在写入时引发错误,并在读取时简单地丢弃。最大消息长度取决于您连接的特定浏览器,但在我的测试中目前略小于1200字节。
此Crate通过依赖于实现Runtime
特质的所需功能,对异步运行时不可知。需求最小:一个Sleep
future和一个具有轮询接收/发送的UdpSocket
。在激活了tokio
特性时提供了一个tokio实现。
运行示例
在终端中
$ cargo run --features tokio --example echo-server -- --data 127.0.0.1:42424 --http 127.0.0.1:8080 --public 127.0.0.1:42424
然后,使用Web浏览器,访问 'http://127.0.0.1:8080/index.html'。打开调试控制台,如果一切正常,您应该会看到发送和接收的消息。
请注意,如果您正在使用Firefox浏览器,Firefox不支持到127.0.0.1的WebRTC连接,因此您可能需要使用不同的IP地址。
致谢
这最初是Rust / Tokio对WebUDP项目的移植,因此原始设计的功劳归功于该项目。
许可证
本项目采用MIT许可证
依赖项
~3–13MB
~154K SLoC