From 395f154135566a153192733309c782f8011a75c6 Mon Sep 17 00:00:00 2001 From: "David P.G" Date: Sun, 13 Jul 2025 21:34:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=A2=E9=98=85=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E5=B9=B6=E6=8E=A5=E6=94=B6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Data/Entities/DbMqtt.cs | 5 +++++ Services/MqttBackgroundService.cs | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Data/Entities/DbMqtt.cs b/Data/Entities/DbMqtt.cs index 313cdaf..d8ac213 100644 --- a/Data/Entities/DbMqtt.cs +++ b/Data/Entities/DbMqtt.cs @@ -49,6 +49,7 @@ public class DbMqtt /// /// MQTT客户端登录密码。 /// + [SugarColumn(IsIgnore = true)] public string PassWord { get; set; } = String.Empty; /// @@ -65,21 +66,25 @@ public class DbMqtt /// /// MQTT发布主题。 /// + [SugarColumn(IsIgnore = true)] public string PublishTopic { get; set; } = String.Empty; /// /// MQTT备注。 /// + [SugarColumn(IsIgnore = true)] public string Remark { get; set; } = String.Empty; /// /// MQTT订阅主题。 /// + [SugarColumn(IsIgnore = true)] public string SubTopics { get; set; } = String.Empty; /// /// MQTT客户端登录用户名。 /// + [SugarColumn(IsIgnore = true)] public string UserName { get; set; } = String.Empty; /// diff --git a/Services/MqttBackgroundService.cs b/Services/MqttBackgroundService.cs index 3040018..7d28aed 100644 --- a/Services/MqttBackgroundService.cs +++ b/Services/MqttBackgroundService.cs @@ -153,12 +153,26 @@ namespace PMSWPF.Services .WithCredentials(mqtt.UserName, mqtt.PassWord) .WithCleanSession() // 清理会话,每次连接都是新会话 .Build(); - + // 设置连接成功事件处理程序。 - client.UseConnectedHandler(e => + client.UseConnectedHandler(async e => { NotificationHelper.ShowSuccess($"已连接到MQTT服务器: {mqtt.Name}"); mqtt.IsConnected = true; + + // 订阅主题 + await client.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("test").Build()); + NlogHelper.Info($"MQTT客户端 {mqtt.Name} 已订阅主题: {mqtt.SubTopics}"); + }); + + // 设置接收消息处理程序 + client.UseApplicationMessageReceivedHandler(e => + { + var topic = e.ApplicationMessage.Topic; + var payload = System.Text.Encoding.UTF8.GetString(e.ApplicationMessage.Payload); + NlogHelper.Info($"MQTT客户端 {mqtt.Name} 收到消息: 主题={topic}, 消息={payload}"); + + // 在这里添加处理消息的逻辑 }); // 设置断开连接事件处理程序。