#websocket-server #tungstenite #native-tls #rustls #binding #non-blocking

tokio-tungstenite

Tokio 对 Tungstenite 的异步绑定,Tungstenite 是一个轻量级的基于流的 WebSocket 实现

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

Download history 520628/week @ 2024-05-04 604294/week @ 2024-05-11 644180/week @ 2024-05-18 607397/week @ 2024-05-25 671827/week @ 2024-06-01 672057/week @ 2024-06-08 616785/week @ 2024-06-15 641077/week @ 2024-06-22 587878/week @ 2024-06-29 618718/week @ 2024-07-06 605043/week @ 2024-07-13 644930/week @ 2024-07-20 623421/week @ 2024-07-27 654767/week @ 2024-08-03 728982/week @ 2024-08-10 614998/week @ 2024-08-17

2,741,058 每月下载量
1,741 个 Crates 中使用 (直接使用 638 个)

MIT 许可证

52KB
925

tokio-tungstenite

为 Tokio 栈提供的异步 WebSocket。

MIT licensed Crates.io Build Status

文档

使用方法

在您的 Cargo.toml 中添加以下内容

[dependencies]
tokio-tungstenite = "*"

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

tokio-tungstenite 是什么?

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

功能

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 用户出色社区提交的多个性能改进,这些用户帮助改进了库!有关待处理性能问题/改进的快速总结,请参阅 此评论

依赖关系

~4–17MB
~240K SLoC