C#MQTTNET客户端使用说明
2021/9/14 1:05:01
本文主要是介绍C#MQTTNET客户端使用说明,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C#MQTTNET客户端使用说明
- 1.如何使用
- 1.我想启动MQTT客户端,我该怎么做?
- 2.我想收到服务器发来消息,我该怎么做?
- 3.我想知道客户端是否连接成功,我该怎么做?
- 3.我想知道怎样重连服务器,我该怎么做?
1.如何使用
代码github地址
1.我想启动MQTT客户端,我该怎么做?
try { IMqttClient client = new MqttFactory().CreateMqttClient(); var build = new MqttClientOptionsBuilder() //配置客户端Id .WithClientId(model.ClientId) //配置登录账号 .WithCredentials("test","1234") //配置服务器IP端口 这里得端口号是可空的 .WithTcpServer("192.168.0.1", "8080") //.WithTcpServer("www.baidu.com")这是一个例子 ; //连接 await client.ConnectAsync(build.Build()); } catch (MqttConnectingFailedException) { Console.WriteLine("身份校验失败"); } catch (Exception ex){ var name = ex.GetType().FullName; Console.WriteLine("出现异常"); Console.WriteLine(ex.Message); }
2.我想收到服务器发来消息,我该怎么做?
client.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(MessageReceivedHandler); /// <summary> /// 收到消息 /// </summary> /// <param name="obj"></param> private void MessageReceivedHandler(MqttApplicationMessageReceivedEventArgs obj) { Console.WriteLine("==================================================="); Console.WriteLine("收到消息:"); Console.WriteLine($"主题:{obj.ApplicationMessage.Topic}"); Console.WriteLine($"消息:{Encoding.UTF8.GetString(obj.ApplicationMessage.Payload)}"); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++"); Console.WriteLine(); }
client.UseApplicationMessageReceivedHandler(args=> { Console.WriteLine("==================================================="); Console.WriteLine("收到消息:"); Console.WriteLine($"主题:{args.ApplicationMessage.Topic}"); Console.WriteLine($"消息:{Encoding.UTF8.GetString(args.ApplicationMessage.Payload)}"); Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++"); Console.WriteLine(); });
3.我想知道客户端是否连接成功,我该怎么做?
//连接成功 client.ConnectedHandler = new MqttClientConnectedHandlerDelegate(ConnectedHandler); /// <summary> /// 连接成功 在此处做订阅主题(Topic)操作 /// </summary> /// <param name="obj"></param> private void ConnectedHandler(MqttClientConnectedEventArgs obj) { Console.WriteLine("本客户端已连接成功"); Console.WriteLine($"地址:{model.IP}"); Console.WriteLine($"端口:{model.Port}"); Console.WriteLine($"客户端:{model.ClientId}"); Console.WriteLine($"账号:{model.Account}"); Console.WriteLine(); //第1种订阅方式 client.SubscribeAsync("主题名称").GetAwaiter().GetResult(); //第2种订阅方式 List<MqttTopicFilter> Topics = new List<MqttTopicFilter>(); Topics.Add(new MqttTopicFilter() { Topic= "主题名称A", QualityOfServiceLevel= MqttQualityOfServiceLevel.ExactlyOnce}); Topics.Add(new MqttTopicFilter() { Topic = "主题名称B" }); Topics.Add(new MqttTopicFilter() { Topic = "主题名称C" }); client.SubscribeAsync(Topics.ToArray()).GetAwaiter().GetResult(); //第3种订阅方式 MqttClientSubscribeOptionsBuilder builder = new MqttClientSubscribeOptionsBuilder(); builder.WithTopicFilter("AAA"); client.SubscribeAsync(builder.Build()).GetAwaiter().GetResult(); }
client.UseConnectedHandler(args=> { Console.WriteLine("本客户端已连接成功"); Console.WriteLine($"地址:{model.IP}"); Console.WriteLine($"端口:{model.Port}"); Console.WriteLine($"客户端:{model.ClientId}"); Console.WriteLine($"账号:{model.Account}"); Console.WriteLine(); //第1种订阅方式 client.SubscribeAsync("主题名称").GetAwaiter().GetResult(); //第2种订阅方式 List<MqttTopicFilter> Topics = new List<MqttTopicFilter>(); Topics.Add(new MqttTopicFilter() { Topic = "主题名称A", QualityOfServiceLevel = MqttQualityOfServiceLevel.ExactlyOnce }); Topics.Add(new MqttTopicFilter() { Topic = "主题名称B" }); Topics.Add(new MqttTopicFilter() { Topic = "主题名称C" }); client.SubscribeAsync(Topics.ToArray()).GetAwaiter().GetResult(); //第3种订阅方式 MqttClientSubscribeOptionsBuilder builder = new MqttClientSubscribeOptionsBuilder(); builder.WithTopicFilter("AAA"); client.SubscribeAsync(builder.Build()).GetAwaiter().GetResult(); });
3.我想知道怎样重连服务器,我该怎么做?
//断开连接 重连就写在此处 client.DisconnectedHandler = new MqttClientDisconnectedHandlerDelegate(DisconnectedHandler); /// <summary> /// 客户端断开连接后,如果需要重连在此处实现 /// </summary> /// <param name="obj"></param> private void DisconnectedHandler(MqttClientDisconnectedEventArgs obj) { Console.WriteLine("本客户端已经断开连接"); Console.WriteLine(); try { client.ConnectAsync(options).GetAwaiter().GetResult(); } catch (Exception) { Console.WriteLine("重连失败"); } }
client.UseDisconnectedHandler(args => { Console.WriteLine("本客户端已经断开连接"); Console.WriteLine(); try { client.ConnectAsync(options).GetAwaiter().GetResult(); } catch (Exception) { Console.WriteLine("重连失败"); } });
这篇关于C#MQTTNET客户端使用说明的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具
- 2024-01-24.NET集成IdGenerator生成分布式全局唯一ID