41 个版本 (21 个重大更新)
0.23.0 | 2024 年 6 月 2 日 |
---|---|
0.21.0 | 2023 年 12 月 7 日 |
0.20.1 | 2023 年 9 月 23 日 |
0.20.0 | 2023 年 7 月 22 日 |
0.1.1 | 2017 年 3 月 22 日 |
#3 在 WebSocket
3,068,581 每月下载量
用于 2,328 个包 (275 个直接使用)
175KB
3.5K SLoC
Tungstenite
为 Rust 提供的轻量级基于流的 WebSocket 实现。
use std::net::TcpListener;
use std::thread::spawn;
use tungstenite::accept;
/// A WebSocket echo server
fn main () {
let server = TcpListener::bind("127.0.0.1:9001").unwrap();
for stream in server.incoming() {
spawn (move || {
let mut websocket = accept(stream.unwrap()).unwrap();
loop {
let msg = websocket.read().unwrap();
// We do not want to send back ping/pong messages.
if msg.is_binary() || msg.is_text() {
websocket.send(msg).unwrap();
}
}
});
}
}
查看示例部分了解如何编写简单的客户端/服务器。
注意: tungstenite-rs
更像是一个构建可靠现代网络应用的框架,使用 WebSocket。如果您正在寻找一个现代的生产就绪的“全功能”WebSocket 库,允许您高效地使用非阻塞套接字并进行“全双工”通信,请查看 tokio-tungstenite
。
简介
此库提供 WebSocket 的实现,RFC6455。它允许同步(类似于 TcpStream)和异步使用,并且易于集成到任何第三方事件循环中,包括 MIO。API 设计抽象了 WebSocket 协议的所有内部细节,但仍然允许那些希望完全控制网络的人访问。
为什么选择 Tungstenite?
它曾是 WS2,WS 的第二个实现。WS2 是二硫化钨的化学式,钨丝矿物。
特性
Tungstenite 提供了 WebSocket 规范的完整实现。所有平台都支持 TLS,使用 native-tls
或 rustls
。以下功能可用
native-tls
native-tls-vendored
rustls-tls-native-roots
rustls-tls-webpki-roots
选择适合您需求的一个。
默认情况下,没有激活TLS功能,请确保您使用TLS的一个功能,否则您将无法与TLS端点通信。
目前不支持permessage-deflate,但欢迎提交相关PR(Pull Requests)。
测试
Tungstenite经过彻底测试,并通过了Autobahn测试套件的WebSocket测试。它还受到内部单元测试以及可能的测试覆盖。
贡献
请在此处报告错误并提交功能请求。
依赖
~0.8–13MB
~180K SLoC