C# M2MQTT 斷線重連@Sunny的工程師日記

最近因為專案的需求,需要做出一個連續24小時365天運作的監看系統,為了確保通訊能夠不中斷就必須做到MQTT斷線重連,避免訊息漏接。

需求:
  1. 建立MQTT連線。
  2. MQTT發送訊息。
  3. MQTT接收訊息。
建置方式:
  1. 引用M2MQTT Library。
  2. 建立MQTT連線。
  3. 建立MQTT發送訊息Function。
  4. 建立MQTT接收訊息Function。
  5. 建立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連線失敗");
    }
}

以上如有任何問題,歡迎留言與我討論。

留言

這個網誌中的熱門文章

C# Textbox 輸入限制數字及一個小數點@Sunny的工程師日記

系統工程師神器!如何讓Python在Linux上執行ssh(三)pyinstaller環境建置@Sunny的工程師日記