#rfc6455 #async #tokio #client-server

websocket-base

Rust 的 WebSocket (RFC6455) 库:低级组件。它包含与 HTTP 无关的 WebSocket 方面

4 个版本

0.26.5 2022 年 7 月 24 日
0.26.2 2020 年 7 月 8 日
0.26.1 2020 年 7 月 6 日
0.24.0 2019 年 11 月 7 日

WebSocket 中排名第 261

Download history 3145/week @ 2024-03-14 3191/week @ 2024-03-21 3629/week @ 2024-03-28 3101/week @ 2024-04-04 3830/week @ 2024-04-11 4019/week @ 2024-04-18 3287/week @ 2024-04-25 3202/week @ 2024-05-02 3266/week @ 2024-05-09 2690/week @ 2024-05-16 2538/week @ 2024-05-23 2528/week @ 2024-05-30 3205/week @ 2024-06-06 2635/week @ 2024-06-13 3040/week @ 2024-06-20 2734/week @ 2024-06-27

每月下载量 12,044
48 Crates 中使用(直接使用 3 个)

MIT 许可证 MIT

71KB
1.5K SLoC

Rust-WebSocket 构建状态 docs.rs

注意:此项目的维护进展缓慢。您可能希望使用 tungstenitetokio-tungstenite

Rust-WebSocket 是用 Rust 编写的 WebSocket (RFC6455) 库。

注意,这个特定的库基于过时的依赖项(Hyper 0.10、Tokio 0.1),因此不适合新项目。建议使用其他 WebSocket 库。

Rust-WebSocket 为处理 WebSocket 连接(客户端和服务器)提供了一个框架。该库目前处于实验状态,但提供支持常规和安全的 WebSocket、支持分片的消息级别 API、数据帧级别 API 以及扩展和自定义行为的能力。

安装

要将来自 crates.io 的库发布版本添加到 Cargo 项目中,请将以下内容添加到 Cargo.toml 中的 'dependencies' 部分

websocket = "0.24.0"

要将库的 Git 仓库添加到 Cargo 项目中,请将以下内容添加到您的 Cargo.toml 中

[dependencies.websocket]

git = "https://github.com/websockets-rs/rust-websocket.git"

可选地,将 extern crate websocket; 添加到您的项目中。

请注意,0.24.0是支持一些非常旧的Rust版本(我不确定确切是哪些,可能是1.28)的最后版本的rust-websocket

用法

此库可以在Rust nightly上编译,包括测试、bench和一些额外功能。要启用nightly功能,请使用cargo --features nightly ...

请参阅库的最新版本文档此处,以及位于/examples的示例,可以使用以下命令运行:

cargo run --example server

并在另一个终端中

cargo run --example client

测试

可以使用cargo test运行测试,并使用cargo bench运行bench测试。

包含了一些测试,确保核心WebSocket功能按预期工作。这些测试还不是全面的,仍在开发中。

Autobahn TestSuite

Rust-WebSocket使用Autobahn TestSuite来测试是否符合RFC6455。如果您已安装Autobahn TestSuite,可以使用以下命令运行这些测试:

wstest -m fuzzingserver
cargo run --example autobahn-client

以测试客户端实现,和

wstest -m fuzzingclient
cargo run --example autobahn-server

以测试服务器实现。规范文件可在此处找到。

这些测试的结果可在此处找到。

贡献

在您提交PR之前,请确保运行所有测试!

# install
rustup component add rustfmt-preview
rustup component add clippy-preview

# test
cargo +nightly fmt -- --check
cargo +nightly clippy --all-features -- -D clippy::all
cargo test --features nightly
cargo bench --features nightly
./scripts/build-all.sh

许可证

MIT许可证(MIT)

版权所有(c)2014-2015 Cyderize

在此特此免费授予任何获得此软件及其相关文档副本(“软件”)的人士,在不受限制的情况下处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许获得软件的人士从事此类活动,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他方式产生,与软件或软件的使用或其它交易有关。


lib.rs:

这是与hyper独立的websocket crate的一部分。它包含处理WebSocket流(在HTTP升级发生后)的代码,WebSocket消息定义,一些错误类型。

目前它仍然可选地依赖于futures 0.1tokio-io 0.1,但如果rust-websocket的开发继续进行,这些依赖项将被提取到一个单独的crate中。

请注意,迄今为止还没有正常的用法示例。请参阅常见的websocket crate或类似如tungstenite的替代方案。

依赖项

~1–12MB
~125K SLoC