【发布时间】:2019-03-24 06:35:43
【问题描述】:
我正在使用此链接中的 MQTT 客户端库
https://www.hivemq.com/blog/mqtt-client-library-encyclopedia-m2mqtt/
我的示例代码如下:-
public partial class Form1 : Form
{
MqttClient client = null;
public Form1()
{
InitializeComponent();
client = new MqttClient("broker.hivemq.com");
byte code = client.Connect("lenovofullondude");
}
private void button1_Click(object sender, EventArgs e)
{
client = new MqttClient("broker.hivemq.com");
byte code = client.Connect("lenovofullondude");
client.ProtocolVersion = MqttProtocolVersion.Version_3_1;
client.MqttMsgPublished += client_MqttMsgPublished;
ushort msgId = client.Publish("/my_topic", // topic
Encoding.UTF8.GetBytes("MyMessageBody"), // message body
MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, // QoS level
false);
}
void client_MqttMsgPublished(object sender, MqttMsgPublishedEventArgs e)
{
Debug.WriteLine("MessageId = " + e.MessageId + " Published = " + e.IsPublished);
}
void client_MqttMsgSubscribed(object sender, MqttMsgSubscribedEventArgs e)
{
Debug.WriteLine("Subscribed for id = " + e.MessageId);
}
private void button2_Click(object sender, EventArgs e)
{
try
{
client = new MqttClient("broker.hivemq.com");
byte code = client.Connect("lenovofullondude");
client.ProtocolVersion = MqttProtocolVersion.Version_3_1;
client.MqttMsgSubscribed += Client_MqttMsgSubscribed;
client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
ushort msgId = client.Subscribe(new string[] { "/my_topic" },
new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
}
catch (Exception H)
{
}
}
private void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
Debug.WriteLine("Received = " + Encoding.UTF8.GetString(e.Message) + " on topic " + e.Topic);
}
private void Client_MqttMsgSubscribed(object sender, MqttMsgSubscribedEventArgs e)
{
Debug.WriteLine("Subscribed for id = " + e.MessageId);
}
}
代码的工作原理如下:-
当我单击按钮 1 发布消息时,我的应用程序上有 2 个按钮。 单击按钮 2 预计将通过此处理程序 Client_MqttMsgPublishReceived 通过 MQTT 订阅和接收发布的消息。
问题:- 按钮 1 单击工作正常,但单击按钮 2 订阅工作正常,但未收到已发布的消息。
谁能建议我做错了什么。而且我很好奇我当前的应用程序发布和接收主题上的消息(使用相同的代码)。
是否可以制作两个不同的应用程序。一个应用程序将发布到主题。第二个应用程序将收到关于该主题的消息(因为它是订阅者)
【问题讨论】:
标签: c# asp.net winforms uwp mqtt