12 个不稳定版本 (3 个破坏性更新)
0.6.0 | 2024 年 4 月 16 日 |
---|---|
0.5.0 | 2024 年 3 月 31 日 |
0.4.4 | 2023 年 11 月 18 日 |
0.4.3 | 2023 年 7 月 8 日 |
0.3.0-alpha.2 | 2021 年 10 月 14 日 |
#127 in WebSocket
12,362 每月下载量
在 12 个 crate 中使用 (2 个直接使用)
140KB
3.5K SLoC
Rust-engineio-client
Rust 编程语言实现的 engine.io 客户端。此实现目前支持 engine.io 协议的第 4 版。如果您与此客户端有任何连接问题,请确保服务器使用至少 engine.io 协议的第 4 版。
示例用法
use rust_engineio::{ClientBuilder, Client, packet::{Packet, PacketId}};
use url::Url;
use bytes::Bytes;
// get a client with an `on_open` callback
let client: Client = ClientBuilder::new(Url::parse("https://127.0.0.1:4201").unwrap())
.on_open(|_| println!("Connection opened!"))
.build()
.expect("Connection failed");
// connect to the server
client.connect().expect("Connection failed");
// create a packet, in this case a message packet and emit it
let packet = Packet::new(PacketId::Message, Bytes::from_static(b"Hello World"));
client.emit(packet).expect("Server unreachable");
// disconnect from the server
client.disconnect().expect("Disconnect failed")
使用此 crate 的主要入口点是 ClientBuilder
(或相应地 asynchronous::ClientBuilder
),它提供了定义如何连接到特定端点的机会。以下连接方法可用
build
:如果允许,则构建 WebSocket,如果不允许,则回退到轮询。标准配置。build_polling
:强制使用polling
传输。build_websocket_with_upgrade
:使用轮询传输构建套接字,然后(如果可能)升级到 WebSocket 传输。build_websocket
:仅使用 WebSocket 传输构建套接字,如果不允许 WebSocket,则崩溃。
当前功能
此实现现在支持在此处提到的所有 engine.io 协议功能 (此处)。这包括各种传输选项,发送 engine.io 数据包以及注册常见的 engine.io 事件回调的可能性
- on_open
- on_close
- on_data
- on_error
- on_packet
还可以通过 TlsConnector
传递自定义 TLS 配置以及自定义的打开请求头。
文档
此 crate 的文档可以在 docs.rs 上找到。
异步版本
该库还提供异步版本,可以通过特性标志启用。异步版本实现了上面提到的相同功能。异步版本具有相似的API,只是使用了异步函数。目前,future只能在tokio
中执行。在第一次基准测试中,异步版本的速度提升了高达93%。要使用异步版本,请按照以下方式导入库
[depencencies]
rust-engineio = { version = "0.3.1", features = ["async"] }
依赖项
~6–19MB
~304K SLoC