31 个版本 (破坏性更新)
0.23.1 | 2024年6月16日 |
---|---|
0.22.0 | 2024年6月1日 |
0.21.0 | 2023年12月7日 |
0.20.1 | 2023年9月23日 |
0.1.0 | 2017年3月17日 |
#5 in WebSocket
2,741,058 每月下载量
在 1,741 个 Crates 中使用 (直接使用 638 个)
52KB
925 行
tokio-tungstenite
为 Tokio 栈提供的异步 WebSocket。
使用方法
在您的 Cargo.toml
中添加以下内容
[dependencies]
tokio-tungstenite = "*"
查看 examples/
目录中的客户端和服务器示例。如果您没有使用过 Tokio,可能还需要熟悉 Tokio。
tokio-tungstenite 是什么?
这个包基于 tungstenite-rs
Rust WebSocket 库,并为它提供了 Tokio
绑定和包装,因此您可以使用它与非阻塞/异步的 TcpStream
,并将其与其他 Tokio
栈中的 Crates 配合使用。
功能
与 tungstenite-rs
一样,TLS 在所有平台上通过 native-tls
或 rustls
支持,通过功能标志 native-tls
,rustls-tls-native-roots
或 rustls-tls-webpki-roots
。默认情况下,这些标志都不启用。有关更多信息,请参阅 Cargo.toml
。如果您需要支持安全 WebSocket(wss://
),请启用其中一个。
它的性能如何?
本质上,tokio-tungstenite
是 tungstenite
的封装,因此其性能受限于 tungstenite
的性能。 tungstenite
具有良好的性能(它已被用于实时通信软件、视频会议等生产环境中),但它在编写此笔记时肯定不是世界上最快的 WebSocket 库。
如果您对性能有极高的要求(尤其是如果您发送 大量消息),那么您可能需要检查其他专为性能设计的库,或者您可以提交一个 PR 来改进 tungstenite
的性能!
我们了解 tungstenite
和 tokio-tungstenite
需要做出哪些改变,以便填补 tungstenite
与如 fastwebsockets
等更高效库之间大约 30% 的性能差距,但我们尚未着手进行,因为这并非原始作者设计库时考虑的使用场景。在过去几年中,我们已经合并了来自 Rust 用户出色社区提交的多个性能改进,这些用户帮助改进了库!有关待处理性能问题/改进的快速总结,请参阅 此评论。
依赖关系
~4–17MB
~240K SLoC