天天看點

阿裡雲物聯網 .NET Core 用戶端 | CZGL.AliIoTClient:9. 自定義委托事件方法

CZGL.AliIoTClient 有7個委托事件,設定了預設的方法。

你可以通過下面的方法使用預設的方法綁定到委托事件中。

public void UseDefaultEventHandler()           

1)預設的方法

收到伺服器下發屬性設定時:

public void Default_PubPropertyEventHandler(object sender, 
                                            MqttMsgPublishEventArgs e)           

收到伺服器調用服務指令時:

public void Default_PubServiceEventHandler(object sender, 
                                           MqttMsgPublishEventArgs e)           

收到普通Topic、上傳資料的響應等其它情況:

public void Default_PubCommonEventHandler(object sender, 
                                          MqttMsgPublishEventArgs e)           

收到伺服器QOS為1的推送

public void Default_PubedEventHandler(object sender, 
                                      MqttMsgPublishedEventArgs e)           

當向伺服器發送消息成功時:

public void Default_SubedEventHandler(object sender, 
                                      MqttMsgSubscribedEventArgs e)           

向伺服器推送消息失敗時:

public void Default_UnSubedEventHandler(object sender, 
                                        MqttMsgUnsubscribedEventArgs e)           

連接配接斷開時

public void Default_ConnectionClosedEventHandler(object sender, 
                                                 System.EventArgs e)           

2)方法的寫法

不同的委托參數不同,有好幾種類型,參考筆者的方法使用參數。

/// 一般的推送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_PubCommonEventHandler(object sender, MqttMsgPublishEventArgs e)
        {
            // handle message received
            string topic = e.Topic;
            string message = Encoding.ASCII.GetString(e.Message);
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("get topic message,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("topic: " + topic);
            Console.WriteLine("get messgae :\n" + message);
        }
        /// <summary>
        /// 收到屬性設定
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_PubPropertyEventHandler(object sender, MqttMsgPublishEventArgs e)
        {
            // handle message received
            string topic = e.Topic;
            string message = Encoding.ASCII.GetString(e.Message);
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("get topic message,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("topic: " + topic);
            Console.WriteLine("get messgae :\n" + message);
        }
        /// <summary>
        /// 收到服務調用
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_PubServiceEventHandler(object sender, MqttMsgPublishEventArgs e)
        {
            // handle message received
            string topic = e.Topic;
            string message = Encoding.ASCII.GetString(e.Message);
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("get topic message,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("topic: " + topic);
            Console.WriteLine("get messgae :\n" + message);
        }
        /// <summary>
        /// 收到伺服器QOS為1的推送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_PubedEventHandler(object sender, MqttMsgPublishedEventArgs e)
        {
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("published,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("MessageId: " + e.MessageId + "    Is Published: " + e.IsPublished);
        }
        /// <summary>
        /// 向伺服器推送成功
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_SubedEventHandler(object sender, MqttMsgSubscribedEventArgs e)
        {
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("Sub topic,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("MessageId: " + e.MessageId);
            Console.WriteLine("List of granted QOS Levels:    " + Encoding.UTF8.GetString(e.GrantedQoSLevels));
        }
        /// <summary>
        /// 推送失敗
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_UnSubedEventHandler(object sender, MqttMsgUnsubscribedEventArgs e)
        {
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("Sub topic error,Date: " + DateTime.Now.ToLongTimeString());
            Console.WriteLine("MessageId:    " + e.MessageId);
        }
        /// <summary>
        /// 連接配接發生異常,斷網等
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Default_ConnectionClosedEventHandler(object sender, EventArgs e)
        {
            Console.WriteLine("- - - - - - - - - - ");
            Console.WriteLine("Connect Closed error,Date: " + DateTime.Now.ToLongTimeString());
        }           

繼續閱讀