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 日

#3WebSocket

Download history 601351/week @ 2024-05-02 589313/week @ 2024-05-09 676777/week @ 2024-05-16 683922/week @ 2024-05-23 712310/week @ 2024-05-30 707568/week @ 2024-06-06 695249/week @ 2024-06-13 677006/week @ 2024-06-20 724969/week @ 2024-06-27 621182/week @ 2024-07-04 657543/week @ 2024-07-11 666267/week @ 2024-07-18 693199/week @ 2024-07-25 687795/week @ 2024-08-01 784612/week @ 2024-08-08 769653/week @ 2024-08-15

3,068,581 每月下载量
用于 2,328 个包 (275 个直接使用)

MIT/Apache

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

MIT licensed Apache-2.0 licensed Crates.io Build Status

文档

简介

此库提供 WebSocket 的实现,RFC6455。它允许同步(类似于 TcpStream)和异步使用,并且易于集成到任何第三方事件循环中,包括 MIO。API 设计抽象了 WebSocket 协议的所有内部细节,但仍然允许那些希望完全控制网络的人访问。

为什么选择 Tungstenite?

它曾是 WS2,WS 的第二个实现。WS2 是二硫化钨的化学式,钨丝矿物。

特性

Tungstenite 提供了 WebSocket 规范的完整实现。所有平台都支持 TLS,使用 native-tlsrustls。以下功能可用

  • 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