当前位置: 首页 > news >正文

MQTTnet.Extensions.ManagedClient客户端连接

一、MQTT客户端

代码如下(示例):

using MQTTnet; 
using MQTTnet.Client; 
using MQTTnet.Extensions.ManagedClient;
using MQTTnet.Protocol;
using MQTTnet.Server;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp.Scripts
{public class MQTTClientConnent:SingleTon<MQTTClientConnent>{private IMqttClient m_mqttClient = null;private IManagedMqttClient m_managedmqttClient;private MqttFactory Factory = new MqttFactory();/// <summary>/// 操作参数/// </summary>private MqttClientOptions Options;/// <summary>/// 消息参数/// </summary>private ManagedMqttClientOptions ManagedOptions;private string m_UDPTitleS;/// <summary>/// 客户端初始化/// </summary>public void Client_Init(){m_UDPTitleS = GetConfigurationSetting.GetInstance.GetKeyValue("UDPTitle");//配置初始化//配置连接参数Options = new MqttClientOptionsBuilder().WithTcpServer("127.0.0.1", 1883).WithClientId("JiJuID").WithCredentials("","").WithWillQualityOfServiceLevel(MqttQualityOfServiceLevel.AtMostOnce)// .WithCleanSession().WithKeepAlivePeriod(TimeSpan.FromSeconds(5)).Build();//配置重连机制ManagedOptions = new ManagedMqttClientOptionsBuilder().WithAutoReconnectDelay(TimeSpan.FromSeconds(5)).WithClientOptions(Options).Build();//创建客户端m_managedmqttClient = Factory.CreateManagedMqttClient();//配置数据接收事件//  m_managedmqttClient.ApplicationMessageReceivedAsync += Receive_Event;m_managedmqttClient.ConnectedAsync += Connected_Event;m_managedmqttClient.DisconnectedAsync += Disconnected_Event;}public async Task ConnectMqttServerAsync(){Client_Init();try{//订阅主题string[] topicArray = new string[] { };if (topicArray.Length > 0){await m_managedmqttClient.SubscribeAsync(topicArray.Select(t => new MqttTopicFilterBuilder().WithTopic(t).WithAtLeastOnceQoS().Build()).ToArray());}//连接服务器await m_managedmqttClient.StartAsync(ManagedOptions);}catch (Exception e){Console.WriteLine(e);}#region m_mqttClient//配置连接参数//var options = new MqttClientOptionsBuilder()//    .WithTcpServer("127.0.0.1", 1883)//    .WithClientId(Guid.NewGuid().ToString())//     .WithCleanSession()//     .WithKeepAlivePeriod(TimeSpan.FromSeconds(5))//    .Build();//if (m_mqttClient == null)//{//    m_mqttClient = new MqttFactory().CreateMqttClient();//    //  MqttServerOptions mqttServerOptions = new MqttServerOptions();//    //   mqttServer = new MqttFactory().CreateMqttServer(mqttServerOptions);//}// await m_mqttClient.ConnectAsync(options);// await m_mqttClient.SubscribeAsync(new MqttTopicFilterBuilder().WithTopic("test/topic").Build());// 发布一条消息//var applicationMessage = new MqttApplicationMessageBuilder()//    .WithTopic("4001")//    .WithPayload("Hello, MQTT!")//    .WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.AtLeastOnce)//    .Build();// await m_mqttClient.PublishAsync(applicationMessage);#endregionConsole.WriteLine("MQTT start-----=====");}private async Task Disconnected_Event(MqttClientDisconnectedEventArgs arg){await Task.Delay(100);Console.WriteLine("MQTT断开链接=====" + arg.ToString());}private async Task Receive_Event(MqttApplicationMessageReceivedEventArgs arg){await Task.Delay(100);}private async Task Connected_Event(MqttClientConnectedEventArgs arg){await Connected_Func(arg);}/// <summary>/// 连接服务器处理方法/// </summary>/// <param name="arg"></param>/// <returns></returns>public virtual async Task Connected_Func(MqttClientConnectedEventArgs arg){await Task.Delay(100);Console.WriteLine("MQTT连接成功====="+ arg.ToString());}//  MqttServer mqttServer;/// <summary>/// 客户端断开/// </summary>public void Disconnected(){m_managedmqttClient.StopAsync();// m_managedmqttClient.ApplicationMessageReceivedAsync -= Receive_Event;m_managedmqttClient.ConnectedAsync -= Connected_Event;m_managedmqttClient.DisconnectedAsync -= Disconnected_Event;}/// <summary>/// 发送消息/// </summary>/// <param name="topic">主题</param>/// <param name="content">内容</param>public virtual void SendMessage(string topic, string content){if (m_managedmqttClient != null && m_managedmqttClient.IsConnected)m_managedmqttClient.EnqueueAsync(m_UDPTitleS + topic, content);//   Console.WriteLine("MQTTSend=====" + m_UDPTitleS + topic + "__" + content);}}
}


http://www.mrgr.cn/news/39589.html

相关文章:

  • 带有controller的自定义组件——列表勾选删除
  • Python 中的lambda函数表达式
  • tomcat的server.xml文件在什么地方?
  • Android资源翻译工具教程
  • Arch Linux 与 Valve 建立直接合作关系
  • 5. 常用开源数据集快速导入Linux服务器(AutoDL)——深度学习·科研实践·从0到1
  • springboot电影售票系统小程序—计算机毕业设计源码36991
  • 在 C++ std::set 中如何利用不同类型的值进行搜索?
  • 1111111
  • 【mmengine】注册器(register) (进阶)继承mmengine注册器来实现自己项目的注册器
  • QMT和PTrade哪个更适合初学者
  • Java中Arrays的用法
  • 清晰视界,触手可及:蔡司智锐镜片引领视觉新风尚
  • 【多线程奇妙屋】能把进程和线程讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】
  • centos已安装python3.7环境,还行单独安装python3.10环境,如何安装,具体步骤
  • Pgsql 数据库操作
  • 唯女子与小人为难养也
  • 聚观早报 | Redmi K80 Pro电池细节;vivo X200 Pro mini真机照
  • AutoGen实现多代理-Tool_Use_and_Conversational_Chess(四)
  • 热门解压短视频素材下载网站推荐