All Projects → inre → Rust Mq

inre / Rust Mq

Licence: mit
RustMQ is the MQTT client written on pure Rust.

Programming Languages

rust
11053 projects

RustMQ

Build Status

This repository is the bundle of crates devoted to the MQTT protocol.

Crates

  • mqtt3 - MQTT protocol reader/writer Crates.io
  • netopt - TCP/SSL connection Crates.io
  • mqttc - Rust MQTT client Crates.io

Binaries

  • mqttc - Console MQTT client

Client

The client has the following functionality:

  • QoS 0, QoS 1, QoS 2 publish/subscribe
  • Last Will message
  • Auto-Ping
  • Auto-Reconnect
  • SSL supported (include TLS v1.1, TLS v1.2)
  • Modular: mqtt3, netopt
  • Logging

Connect

let netopt = NetworkOptions::new();
let mut opts = ClientOptions::new();
opts.set_reconnect(ReconnectMethod::ReconnectAfter(Duration::from_secs(1)));
let mut client = opts.connect("127.0.0.1:1883", netopt).expect("Can't connect to server");

Publish

client.publish("a/b/c", "hello", PubOpt.at_least_once()).unwrap();
while (client.await().unwrap().is_some()) {};

Subscribe

client.subscribe("a/b/c").unwrap();
loop {
    match client.await().unwrap() {
        Some(message) => {
            println!("{:?}", message);
        },
        None => {}
    }
}

Command line interface

mqtt-cli

MQTT Client installation:

git clone https://github.com/inre/rust-mq.git
cd rust-mq
make && make install

Subscribe to all topics:

mqttc sub

Or try,

mqttc sub -a test.mosquitto.org
mqttc sub -a iot.eclipse.org
mqttc sub -a test.mosca.io
mqttc sub -a broker.hivemq.com

Publish to the topic:

mqttc pub -t a/b/c -m "hello"

Server

Maybe in future

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].