An MQTT 3.1.1 client written in Rust, using async functions and tokio.
- Repository: https://github.com/fluffysquirrels/mqtt-async-client-rs
- Documentation: https://docs.rs/mqtt-async-client
- Cargo crate: https://crates.io/crates/mqtt-async-client
- CI builds on Travis CI: https://travis-ci.com/fluffysquirrels/mqtt-async-client-rs
Pull requests and Github issues welcome!
Simply run cargo test
.
The integration tests require an MQTT broker to run against, see the
instructions in ${REPO}/tests/integration_test.rs
.
Run cargo run --example mqttc
to print usage.
The test app requires an MQTT broker to run against, see the
instructions in ${REPO}/tests/integration_test.rs
.
Run cargo run --example mqttc -- --host localhost publish topic payload
to publish payload payload
to topic topic
.
Run RUST_LOG="info" cargo run --example mqttc -- --host localhost subscribe topic
to subscribe to topic topic
and print any messages that are published to it.
- Add
--tls-client-crt-file
and--tls-client-rsa-key-file
options to the examplemqttc
. Thanks to marcelbuesing for the PR! - Remove
ClientBuilder.set_connection_mode
, which was unused. Thanks to marcelbuesing for the PR!
- Add WebSocket support under Cargo feature "websocket".
- Switch
ClientBuilder
to use a URL instead of host and port. This was a breaking change to make it simple for consumers to switch protocol.
Thanks to JarredAllen for the implementation!
- Update
tokio
dependency to v1.2.0. Thanks to marcelbuesing for the PR!
- Implement
Debug
forClient
andClientOptions
- Reduce dependencies for faster and less fiddly builds:
env_logger
andstructopt
are now dev-dependencies,rustls
is now optional but included by default as part of thetls
feature.
Thanks to marcelbuesing for the PRs!
Client
isSend
.
- Correctly connect only once when automatic_connect is disabled.
-
Missing ping responses should cause a disconnect even when keepalive > op timeout.
-
Publish with retain flag.
- Added timeouts to disconnect, and publish when QoS=0.
-
Enable automatic reconnects by default.
-
This tracks subscriptions and replays them after reconnecting. No publish retries yet.