#mqtt-client #async #libmosquitto #router #default #mosquitto #qos

mosquitto-rs

基于 libmosquitto 的异步 MQTT 客户端

17 个版本 (10 个重大更新)

0.11.2 2024年5月8日
0.11.1 2024年1月14日
0.10.0 2024年1月6日
0.7.0 2023年12月27日
0.4.0 2021年1月3日

1396网络编程

Download history 107/week @ 2024-05-02 50/week @ 2024-05-09 27/week @ 2024-05-16 17/week @ 2024-05-23 9/week @ 2024-05-30 27/week @ 2024-06-06 90/week @ 2024-06-13 30/week @ 2024-06-20 11/week @ 2024-06-27 16/week @ 2024-07-04 159/week @ 2024-07-11 26/week @ 2024-07-18 20/week @ 2024-07-25 15/week @ 2024-08-01 15/week @ 2024-08-08 28/week @ 2024-08-15

每月79次 下载

MIT 许可证

2.5MB
64K SLoC

C 45K SLoC // 0.1% comments Python 15K SLoC // 0.2% comments Rust 2.5K SLoC // 0.0% comments C++ 1.5K SLoC // 0.0% comments Shell 193 SLoC // 0.3% comments Bitbake 81 SLoC // 0.9% comments Perl 69 SLoC // 0.3% comments XSL 53 SLoC // 0.2% comments

异步 MQTT 客户端

build Crates.io

此包实现了一个使用 libmosquitto 的异步 MQTT 客户端。

use mosquitto_rs::*;

fn main() -> Result<(), Error> {
    smol::block_on(async {
        let mut mosq = Client::with_auto_id()?;
        let rc = mosq.connect("localhost", 1883, std::time::Duration::from_secs(5), None).await?;
        println!("connect: {}", rc);

        let subscriptions = mosq.subscriber().unwrap();

        mosq.subscribe("test", QoS::AtMostOnce).await?;
        println!("subscribed");

        mosq.publish("test", b"woot", QoS::AtMostOnce, false)
            .await?;
        println!("published");

        if let Ok(msg) = subscriptions.recv().await {
            println!("msg: {:?}", msg);
        }

        Ok(())
    })
}

lib.rs:

此包实现了一个使用 libmosquitto 的异步 MQTT 客户端。

use mosquitto_rs::*;

fn main() -> Result<(), Error> {
    smol::block_on(async {
        let mut client = Client::with_auto_id()?;
        let rc = client.connect(
                       "localhost", 1883,
                       std::time::Duration::from_secs(5), None).await?;
        println!("connect: {}", rc);

        let subscriptions = client.subscriber().unwrap();

        client.subscribe("test", QoS::AtMostOnce).await?;
        println!("subscribed");

        client.publish("test", b"woot", QoS::AtMostOnce, false)
            .await?;
        println!("published");

        if let Ok(msg) = subscriptions.recv().await {
            println!("msg: {:?}", msg);
        }

        Ok(())
    })
}

功能

以下功能标志可用

  • router - 包含路由模块和 MqttRouter 类型。默认启用。
  • vendored-mosquitto - 使用打包的 libmosquitto 2.4 库。默认启用。
  • vendored-mosquitto-tls - 在打包的 libmosquitto 中启用 TLS 支持。默认启用。
  • vendored-openssl - 从源代码构建 openssl,而不是使用系统库。推荐 macOS 和 Windows 用户启用此功能。

依赖项