self_publish/
self-publish.rs

1extern crate mosquitto_client as mosq;
2use mosq::Mosquitto;
3use std::{thread, time};
4
5fn main() {
6    let m = Mosquitto::new("test");
7    
8    m.connect("localhost",1883).expect("can't connect");
9    m.subscribe("bilbo/#",1).expect("can't subscribe to bonzo");
10    
11    let mt = m.clone();
12    thread::spawn(move || {
13        let timeout = time::Duration::from_millis(500);
14        for _ in 0..5 {
15            mt.publish("bilbo/baggins","hello dolly".as_bytes(), 1, false).unwrap();
16            thread::sleep(timeout);
17        }
18        mt.disconnect().unwrap();
19    });
20    
21    let mut mc = m.callbacks(0);
22    mc.on_message(|data,msg| {
23        println!("bilbo {:?}",msg);
24        *data += 1;
25    });
26    mc.on_disconnect(|_,rc| println!("disconnect {}",rc));
27    
28    
29    m.loop_until_disconnect(200).expect("broken loop");
30    println!("received {} messages",mc.data);
31}