self_publish/
self-publish.rs1extern 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}