inre / rust-mq

RustMQ is the MQTT client written on pure Rust.
MIT License
190 stars 28 forks source link

RustMQ

Build Status

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

Crates

Binaries

Client

The client has the following functionality:

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