1 个不稳定版本
| 0.1.0 | 2023年11月26日 |
|---|
#192 in #non-blocking
52KB
941 行
tokio-tungstenite
为Tokio堆栈提供异步WebSocket。
用法
在您的 Cargo.toml 中添加此内容
[dependencies]
tokio-tungstenite = "*"
请查看 examples/ 目录中的客户端和服务器示例。如果您没有使用过Tokio,您可能还需要熟悉Tokio。
什么是tokio-tungstenite?
这个crate基于tungstenite-rs Rust WebSocket库,并为它提供了Tokio绑定和包装,因此您可以使用它与非阻塞/异步的TcpStream,并将其与其他Tokio堆栈中的crate结合使用。
功能
与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 用户社区提交的几个性能改进,这些用户帮助改进了库!关于待解决的性能问题/改进的简要总结,请参阅 该评论。
依赖项
~3–16MB
~230K SLoC