11个版本 (6个破坏性)

0.7.1 2024年1月22日
0.6.2 2022年10月24日
0.5.0 2022年5月11日
0.4.1 2021年9月13日
0.1.0 2020年5月26日

87网络编程

Download history 552/week @ 2024-04-20 533/week @ 2024-04-27 572/week @ 2024-05-04 634/week @ 2024-05-11 749/week @ 2024-05-18 552/week @ 2024-05-25 482/week @ 2024-06-01 405/week @ 2024-06-08 590/week @ 2024-06-15 498/week @ 2024-06-22 424/week @ 2024-06-29 251/week @ 2024-07-06 432/week @ 2024-07-13 517/week @ 2024-07-20 514/week @ 2024-07-27 396/week @ 2024-08-03

1,887 每月下载量
用于 29 个软件包 (28 个直接)

Apache-2.0

2MB
37K SLoC

用Rust编写的高级、内含电池的Matrix客户端库。

该软件包旨在成为使用Matrix 客户端-服务器API与Matrix homeserver通信的通用库。如果您正在编写典型的Matrix客户端或机器人,这可能就是您需要的软件包。

但是,该软件包是模块化设计的,依赖于几个其他底层软件包。如果您正在尝试更定制化的内容,您可能会对这些感兴趣

  • matrix_sdk_base:一个无网络IO客户端状态机,可以用于将Matrix客户端嵌入到现有的网络堆栈中,或用于构建新的Matrix客户端库。
  • matrix_sdk_crypto:一个无网络IO加密状态机,可以用于将Matrix E2EE支持添加到现有的客户端或库中。

入门

您将与之交互的核心组件是Client。基本用例将包括实例化客户端,以用户身份登录,注册一些事件处理器,然后同步。

以下示例展示了这一过程。

use matrix_sdk::{
    Client, config::SyncSettings,
    ruma::{user_id, events::room::message::SyncRoomMessageEvent},
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let alice = user_id!("@alice:example.org");
    let client = Client::builder().server_name(alice.server_name()).build().await?;

    // First we need to log in.
    client.matrix_auth().login_username(alice, "password").send().await?;

    client.add_event_handler(|ev: SyncRoomMessageEvent| async move {
        println!("Received a message {:?}", ev);
    });

    // Syncing is important to synchronize the client state with the server.
    // This method will never return unless there is an error.
    client.sync(SyncSettings::default()).await?;

    Ok(())
}

更多示例可以在示例目录中找到。

软件包功能标志

以下软件包功能标志可用

功能 默认 描述
anyhow 为返回anyhow::Result的事件处理器提供更好的日志记录
e2e-encryption 端到端加密(E2EE)支持
eyre 为返回 eyre::Result 的事件处理程序提供更好的日志记录
image-proc 用于生成缩略图的图像处理
image-rayon 启用更快的图像处理
js 启用WASM上的JavaScript API使用(在其他目标上无作用)
markdown 支持发送Markdown格式消息
qrcode 二维码验证支持
sqlite 通过系统上的SQLite实现状态和E2EE数据的持久存储(可选,如果启用e2e-encryption功能)
bundled-sqlite 通过与二进制文件一起编译和捆绑的SQLite实现状态和E2EE数据的持久存储(可选,如果启用e2e-encryption功能)
indexeddb 通过IndexedDB实现状态和E2EE数据的持久存储(可选,如果启用e2e-encryption功能),适用于浏览器
socks 在默认HTTP客户端中支持SOCKS,reqwest
sso-login 支持使用本地HTTP服务器进行SSO登录

启用日志记录

matrix-sdk crate的用户可以通过依赖tracing-subscriber crate并在其应用程序中包含以下行来启用日志输出(例如在main的开始处)

tracing_subscriber::fmt::init();

日志输出通过RUST_LOG环境变量控制,将其设置为errorwarninfodebugtrace之一。输出将打印到stdout。

RUST_LOG变量还支持更复杂的语法来更精确地过滤日志输出,例如按crate级别。有关更多信息,请参阅tracing_subscriber文档

依赖项

~20–45MB
~779K SLoC