MQTT,QoS 2 - 如何知道我的消息是否收到? [重复]

问题描述 投票:0回答:1

我正在尝试在锉刀和我的 PC 之间建立 MQTT 连接。在网上搜索示例,我发现了这个:https://github.com/codingdroplets/MqttCSharpSample

我按照上面的例子创建了一个类来管理这个连接。问题是我需要知道我的 rasp 是否收到消息,我不知道如何。

我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace TelemetryManager
{
    public class MQTTmanager
    {
        private MqttClient mqttClient;

        public MQTTmanager() { }

        ~MQTTmanager() { }

        public void MqttConect(string _ipAddress, string _topic, string _serialNumber)
        {
            Task.Run(() =>
            {
                mqttClient = new MqttClient(IPAddress.Parse(_ipAddress));
                mqttClient.MqttMsgPublishReceived += MqttClient_MqttMsgPublishReceived;
                mqttClient.Subscribe(new string[] { _topic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
                mqttClient.Connect(_serialNumber);
            });
        }

        private void MqttClient_MqttMsgPublishReceived(object sender, uPLibrary.Networking.M2Mqtt.Messages.MqttMsgPublishEventArgs e)
        {
            var message = Encoding.UTF8.GetString(e.Message);

            /* - */
        }

        public void MqttPublish(string _topic, string _message)
        {
            Task.Run(() =>
            {
                if (mqttClient != null && mqttClient.IsConnected)
                    mqttClient.Publish(_topic, Encoding.UTF8.GetBytes(_message));
            });
        }
    }
}
c# mqtt
1个回答
0
投票

你不能。这是 MQTT/pubsub/queue 类软件设计的一部分

您应该先确定您的需求,然后再选择技术

© www.soinside.com 2019 - 2024. All rights reserved.