如何使用MVC在mqtt中获取订阅消息?

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

我在mvc中尝试了mqtt发布和订阅代码,

我可以使用以下代码发布消息。

string MQTT_BROKER_ADDRESS = "212.72.74.21";
MqttClient client = new MqttClient(MQTT_BROKER_ADDRESS);
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
string strValue = "Message to be Send";
client.Publish("Topic", Encoding.UTF8.GetBytes(strValue));

消息发布。

但是在订阅消息时,我无法得到它。

我使用以下代码。

MqttClient client = new MqttClient("212.72.74.21");


client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
client.Subscribe(new string[] { "Message1" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });

订阅的消息必须在以下方法中处理。

static  void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
    //Handle Message recieved        
}

但我的问题是程序不会进入订阅功能。

我该如何解决?

请提出一些想法来纠正我的问题。

c# asp.net-mvc mqtt
1个回答
0
投票

您正在使用与要发布的主题不同的主题进行订阅。确保两个主题完全相同。

将以下行更改为:

client.Publish("myTopic", Encoding.UTF8.GetBytes(strValue));

以下行:

client.Subscribe(new string[] { "myTopic" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });

在您的代理中,打印出一些有用的信息,以通知您收到了一条消息,例如:

static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
    Console.WriteLine("Message received.");        
}
© www.soinside.com 2019 - 2024. All rights reserved.