2.1.3.Install M2Mqtt by Nuget, Example code
1.Requirement: .NET Framework 4.5
2.Open Nuget console and input "Install-Package M2Mqtt"
3.Example code:
1.Publisher:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; namespace MQTTPublisher { class Program { static void Main(string[] args) { var id = args[0]; var topic = args[1]; MqttClient client = new MqttClient("127.0.0.1"); //若有輸入user, password, 接收端也要一樣的user, password client.Connect(id); //若要知道有沒有發送出去可以增加監聽發送後的Event client.MqttMsgPublished += new MqttClient.MqttMsgPublishedEventHandler(client_MqttMsgPublished);
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10000; i++)
{
//publish 最後一的parameter 是retain, 會決定是否保留著最後一個message
ushort t = client.Publish(topic, Encoding.UTF8.GetBytes("XXXXXtestmessage, "
+ Guid.NewGuid().ToString() + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + ", times: " + i),
MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, true);
//
Thread.Sleep(1000);
}
sw.Stop();
Console.WriteLine("花費時間..... {0}", sw.Elapsed);
//Console.ReadLine();
client.Disconnect();
}
private static void client_MqttMsgPublished(object sender, MqttMsgPublishedEventArgs e)
{
Console.WriteLine("Message Published");
Console.WriteLine(e.IsPublished);
Console.WriteLine(e.MessageId);
}
}
}
2.Subscriber:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
namespace MQTTSubscriber
{
class Program
{
static void Main(string[] args)
{
var id = args[0];
var topic = args[1];
MqttClient client = new MqttClient("127.0.0.1");
//如果有出現相同的id 會把前一個id 給踢掉
//要與發送端相同
client.Connect(id);
//topic 可以使用 topic1/#, topic2/+ 去接收相似的topic ,有點類似 sql like 的功能但限制較多
string[] topic2 = { topic };
byte[] qoslevels = { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE };
client.Subscribe(topic2, qoslevels);
client.MqttMsgPublishReceived += new MqttClient.MqttMsgPublishEventHandler(client_PublishArrived);
//client.MqttMsgPublishReceived += new MqttClient.MqttMsgPublishEventHandler(client_PublishArrived);
//Thread.Sleep(100000);
Console.ReadLine();
client.Disconnect();
}
private static void client_PublishArrived(object sender, MqttMsgPublishEventArgs e)
{
Console.WriteLine("Message Received");
Console.WriteLine(e.Topic);
Console.WriteLine(Encoding.UTF8.GetString(e.Message));
}
}
}
4.心得:
1.Publisher與Subscriber的ID不要相同
2.Publisher與Subscriber的Topic要相同
Last updated