标签:mqttClient System MQTTnet MQTTNetHelper static ex using
项目.NetFramework版本4.5.2
Nuget安装MQTTnet版本3.0.12
using MQTTnet; using MQTTnet.Client; using MQTTnet.Client.Connecting; using MQTTnet.Client.Disconnecting; using MQTTnet.Client.Options; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Common { private static MqttClient mqttClient = null; private static IMqttClientOptions mqttOption = null; public static void Subscribe() { try { mqttClient = new MqttFactory().CreateMqttClient() as MqttClient;
//ClientId可以自定义,用于区分同账号不同客户端,多个客户端相同账号相同ClientId会导致其中只有一个能订阅到消息 mqttOption = new MqttClientOptionsBuilder().WithClientId("id1").WithTcpServer("192.168.1.101", 8000).WithCredentials("zhangsan", "abc123").WithTls().WithCleanSession().Build(); mqttClient.UseConnectedHandler(ConnectedHandler); mqttClient.UseApplicationMessageReceivedHandler(MessageReceivedHandler); mqttClient.UseDisconnectedHandler(DisconnectedHandler); mqttClient.ConnectAsync(mqttOption, CancellationToken.None); } catch (Exception ex) { //LogHelper.logger.Error(ex); } } static async Task ConnectedHandler(MqttClientConnectedEventArgs e) { try { await mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("my/topic").Build()); } catch (Exception ex) { //LogHelper.logger.Error(ex); } } static async Task MessageReceivedHandler(MqttApplicationMessageReceivedEventArgs e) { try { await new Task(() => { if (e.ApplicationMessage.Topic == "my/topic") { Console.WriteLine(Encoding.Default.GetString(e.ApplicationMessage.Payload));//PayLoad就是订阅到的消息的内容 } }); } catch (Exception ex) { //LogHelper.logger.Error(ex); } } static async Task DisconnectedHandler(MqttClientDisconnectedEventArgs e) { try { await mqttClient.ConnectAsync(mqttOption, CancellationToken.None);//断线重连 } catch (Exception ex) { //LogHelper.logger.Error(ex); } } }
标签:mqttClient,System,MQTTnet,MQTTNetHelper,static,ex,using 来源: https://www.cnblogs.com/chixiner/p/13810363.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。