C# M2MQTT 斷線重連@Sunny的工程師日記
最近因為專案的需求,需要做出一個連續24小時365天運作的監看系統,為了確保通訊能夠不中斷就必須做到MQTT斷線重連,避免訊息漏接。
需求:
以上如有任何問題,歡迎留言與我討論。
需求:
- 建立MQTT連線。
- MQTT發送訊息。
- MQTT接收訊息。
建置方式:
- 引用M2MQTT Library。
- 建立MQTT連線。
- 建立MQTT發送訊息Function。
- 建立MQTT接收訊息Function。
- 建立MQTT斷線Function。
以下是我的程式碼,請自行參考。
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Exceptions;
using uPLibrary.Networking.M2Mqtt.Messages;
public static MqttClient client;//MqttClient
string ls_Ip = "127.0.0.1";//Broker IP
static void ConnectionClosed(object sender, EventArgs e)
{
//MQTT斷線的事件,將中斷連線時需要做的事情放在這邊
}
public void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
//MQTT接收的事件
}
static void MqttMsgSubscribed(object sender, MqttMsgSubscribedEventArgs e)
{
//MQTT訂閱的事件
}
public void mqttconnect()
{
try
{
client = new MqttClient(ls_Ip);//MQTTServer在本機
client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;//當接收到訊息時會啟動
client.MqttMsgSubscribed += MqttMsgSubscribed;//當Topic訂閱成功時會啟動
client.ConnectionClosed += ConnectionClosed;//當MQTT中斷連線時會啟動
client.Connect("MQTT_Test", "Sunny", "12345678", false, 0);//建立MQTT連線
client.Subscribe(new string[] { "IO1" }, new byte[] { 2 });//加入訂閱的Topic
}
catch (System.Exception)//當MQTT建立連線失敗
{
Console.WriteLine("MQTT連線失敗");
}
}
以上如有任何問題,歡迎留言與我討論。
留言
張貼留言