#non-blocking #io #web #async-io

已删除 silent-tokio-tungstenite

Tokio绑定库,用于Tungstenite,轻量级的基于流的WebSocket实现

1 个不稳定版本

0.1.0 2023年11月26日

#192 in #non-blocking

MIT 许可证

52KB
941

tokio-tungstenite

为Tokio堆栈提供异步WebSocket。

MIT licensed Crates.io Build Status

文档

用法

在您的 Cargo.toml 中添加此内容

[dependencies]
tokio-tungstenite = "*"

请查看 examples/ 目录中的客户端和服务器示例。如果您没有使用过Tokio,您可能还需要熟悉Tokio

什么是tokio-tungstenite?

这个crate基于tungstenite-rs Rust WebSocket库,并为它提供了Tokio绑定和包装,因此您可以使用它与非阻塞/异步的TcpStream,并将其与其他Tokio堆栈中的crate结合使用。

功能

tungstenite-rs一样,TLS在所有平台上通过native-tlsrustls支持,通过功能标志:native-tlsrustls-tls-native-rootsrustls-tls-webpki-roots启用。默认情况下都不启用。有关更多信息,请参阅Cargo.toml。如果您需要支持安全WebSocket(wss),请启用其中之一。

性能如何?

本质上,tokio-tungstenitetungstenite 的包装器,因此性能受限于 tungstenite 的性能。 tungstenite 具有不错的性能(它已经在实时通信软件、视频会议等生产环境中使用),但绝对不是世界上性能最快的 WebSocket 库。

如果您非常重视性能(尤其是如果您发送 大量消息),那么您可能需要检查其他专为性能而设计的库,或者您可以提交一个 PR 来改进 tungstenite 的性能!

我们了解到 tungstenitetokio-tungstenite 都需要做出改变,以填补 tungstenite 和更高性能的库(如 fastwebsockets)之间大约 30% 的性能差距,但我们还没有着手进行,因为这不是原始作者为该库设计的用例所必需的。在过去几年中,我们已经合并了 Rust 用户社区提交的几个性能改进,这些用户帮助改进了库!关于待解决的性能问题/改进的简要总结,请参阅 该评论

依赖项

~3–16MB
~230K SLoC