0


在Net8.0中使用 MQTTnet 开源库实现 MQTT 应用程序开发(实践)

在这里插入图片描述

1. 介绍

MQTTnet 是一个强大的开源 MQTT 客户端库,适用于 C# 平台。它提供了丰富的功能和灵活的 API,可以轻松地构建基于 MQTT 协议的应用程序。本文将逐步学习如何使用 MQTTnet 库创建 MQTT 客户端,并实现基本的发布、订阅功能。

简介

在这里插入图片描述
什么是MQTT?

在这里插入图片描述
MQTT的发布和订阅架构

在这里插入图片描述

2. 搭建MQTT Broker

在Windows 系统上搭建 MQTT Broker,前一篇文章 Docker部署Eclipse Mosquitto开源MQTT的消息代理环境步骤(实践),我们使用docker搭建了Mosquitto环境。如果你觉得比较麻烦,也可以使用软件包来搭建环境。
在这里插入图片描述
具体的搭建步骤,可以查看官网。

3. 安装MQTTnet库

在这里插入图片描述

通过 NuGet 包管理器将 MQTTnet 库添加到我们的项目中。
在这里插入图片描述

4. 项目编码开发

1. MqttSubscriber项目

  1. 新建MqttSubscriber项目。在这里插入图片描述
  2. 配置引用MQTTnet库
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net8.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="MQTTnet" Version="4.3.3.952"/><PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="4.3.3.952"/></ItemGroup></Project>
  1. 编写订阅代码
usingSystem.Text;usingMQTTnet;usingMQTTnet.Client;classProgram{staticasyncTaskMain(string[] args){var options =newMqttClientOptionsBuilder().WithTcpServer("localhost",1883).WithCredentials("root","root").Build();var factory =newMqttFactory();var mqttClient = factory.CreateMqttClient();

        mqttClient.ApplicationMessageReceivedAsync += MqttClient_ApplicationMessageReceivedAsync;await mqttClient.ConnectAsync(options);await mqttClient.SubscribeAsync("testtopic");

        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();await mqttClient.DisconnectAsync();}privatestaticTaskMqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg){
        Console.WriteLine($"Received message: {Encoding.UTF8.GetString(arg.ApplicationMessage.PayloadSegment)}");return Task.CompletedTask;}}

2. MqttPublisher项目

  1. 新建MqttPublisher项目。在这里插入图片描述
  2. 配置引用MQTTnet库
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>net8.0</TargetFramework><ImplicitUsings>enable</ImplicitUsings><Nullable>enable</Nullable></PropertyGroup><ItemGroup><PackageReference Include="MQTTnet" Version="4.3.3.952"/><PackageReference Include="MQTTnet.Extensions.ManagedClient" Version="4.3.3.952"/></ItemGroup></Project>
  1. 编写发布代码
usingSystem;usingSystem.Text;usingSystem.Threading.Tasks;usingMQTTnet;usingMQTTnet.Client;usingMQTTnet.Extensions.ManagedClient;classProgram{staticasyncTaskMain(string[] args){var options =newMqttClientOptionsBuilder().WithTcpServer("localhost",1883).WithCredentials("root","root").Build();var factory =newMqttFactory();var mqttClient = factory.CreateMqttClient();var managedMqttClient =newMqttFactory().CreateManagedMqttClient();await managedMqttClient.SubscribeAsync("testtopic");await mqttClient.ConnectAsync(options);bool bcontinue =true;while(bcontinue){string input =$"{DateTime.Now.ToString("HH:mm:ss fff")}:{Guid.NewGuid().ToString()}";           
            Console.WriteLine(input);var message =newMqttApplicationMessageBuilder().WithTopic("testtopic").WithPayload(Encoding.UTF8.GetBytes(input)).WithQualityOfServiceLevel(MQTTnet.Protocol.MqttQualityOfServiceLevel.ExactlyOnce).WithRetainFlag().Build();await mqttClient.PublishAsync(message);}await managedMqttClient.StopAsync();}}
  1. 调试运行在这里插入图片描述

5. 参考文档

  • MQTT - The Standard for IoT Messaging
  • Getting started
  • 在.NET7中使用MQTTnet简单实现MQTT通信 - 翔星 - 博客园
标签: .net MQTT

本文转载自: https://blog.csdn.net/houbincarson/article/details/141270979
版权归原作者 dotnet研习社 所有, 如有侵权,请联系我们删除。

“在Net8.0中使用 MQTTnet 开源库实现 MQTT 应用程序开发(实践)”的评论:

还没有评论