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 在 网络编程
1,887 每月下载量
用于 29 个软件包 (28 个直接)
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
环境变量控制,将其设置为error
、warn
、info
、debug
或trace
之一。输出将打印到stdout。
RUST_LOG
变量还支持更复杂的语法来更精确地过滤日志输出,例如按crate级别。有关更多信息,请参阅tracing_subscriber文档。
依赖项
~20–45MB
~779K SLoC