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