/
aristeh
/
gui
Обзор
Документация
Войти
/
aristeh
/
gui
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/Server.rs
34 строки
1 KB
aristeh
обработка сообщения
20 июн 2025, 16:32
20 июн 2025, 16:32
6aeea96
Код
Авторство
О чём код?
use bincode::{config, Decode, Encode}; use std::thread; use rumqttc::{Client, Event, Incoming, MqttOptions}; use std::error::Error; #[derive(Encode, Decode, PartialEq, Debug)] pub(crate) struct MessageMqtt { pub(crate) sender: String, pub(crate) recipient: String, pub(crate) content: String, pub(crate) action: String, pub(crate) parameters: Vec<String>, } pub fn start_client() -> Result<Client, Box<dyn Error>> { let mqtt_options = MqttOptions::new("client", "127.0.0.1", 1883); let (client, mut connection) = Client::new(mqtt_options, 10); thread::spawn(move || { for notification in connection.iter().flatten() { if let Event::Incoming(Incoming::Publish(packet)) = notification { let config = config::standard(); let message: Vec<u8> = Vec::from(packet.payload.as_ref()); let (decoded, _len): (MessageMqtt, usize) = bincode::decode_from_slice(&message[..], config).unwrap(); println!("server{:?}", decoded); } } }); Ok(client) }