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.22021 年 10 月 14 日

#127 in WebSocket

Download history 2352/week @ 2024-05-03 2394/week @ 2024-05-10 2370/week @ 2024-05-17 2404/week @ 2024-05-24 2985/week @ 2024-05-31 3226/week @ 2024-06-07 2832/week @ 2024-06-14 2587/week @ 2024-06-21 2569/week @ 2024-06-28 2699/week @ 2024-07-05 3192/week @ 2024-07-12 3011/week @ 2024-07-19 3018/week @ 2024-07-26 3129/week @ 2024-08-02 2867/week @ 2024-08-09 2721/week @ 2024-08-16

12,362 每月下载量
12 个 crate 中使用 (2 个直接使用)

MIT 许可证

140KB
3.5K SLoC

Latest Version docs.rs

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