如何在 .Net 7 中使用 MQTT 客户端

发布于:2025-06-27 ⋅ 阅读:(14) ⋅ 点赞:(0)

介绍 

        MQTT(消息队列遥测传输)是一种轻量级消息传递协议,专为资源受限的环境而设计。MQTT 广泛应用于物联网 (IoT) 和机器对机器 (M2M) 通信。

        本文将讨论如何在 .NET 7 中实现 MQTT 消费者。我们将使用 MQTTnet 库,这是 C# 中的高性能 MQTT 客户端库。

设置环境

        要开始使用 .NET 7,您必须在系统上安装它。您可以从 .NET 官方网站下载并安装 .NET 7。

        要使用 MQTTnet,您需要将 MQTTnet NuGet 包添加到您的项目中。您可以使用 Visual Studio 中的 NuGet 包管理器或 dotnet CLI 来完成此操作。

dotnet add package MQTTnet

实现 MQTT 消费者

您需要创建一个新的控制台应用程序来在 .NET 7 中实现 MQTT 消费者。在此示例中,我们将订阅一个主题并从 MQTT 代理接收消息。

using System;
using System.Threading;
using System.Threading.Tasks;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Subscribing;
using MQTTnet.Protocol;
class Program {
    static async Task Main(string[] args) {
        var factory = new MqttFactory();
        var client = factory.CreateMqttClient();
        var options = new MqttClientOptionsBuilder().WithTcpServer("localhost", 1883).WithClientId("mqtt_consumer").Build();
        client.UseConnectedHandler(async e => {
            Console.WriteLine("Connected to MQTT broker.");
            var topicFilter = new MqttTopicFilterBuilder().WithTopic("test/topic").Build();
            await client.SubscribeAsync(new MqttClientSubscribeOptionsBuilder().WithTopicFilter(topicFilter).Build());
        });
        client.UseDisconnectedHandler(async e => {
            Console.WriteLine("Disconnected from MQTT broker.");
            await Task.Delay(TimeSpan.FromSeconds(5));
            try {
                await client.ConnectAsync(options, CancellationToken.None);
            } catch {
                Console.WriteLine("Reconnecting to MQTT broker failed.");
            }
        });
        client.UseApplicationMessageReceivedHandler(e => {
            Console.WriteLine($ "Received message on topic '{e.ApplicationMessage.Topic}': {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
        });
        try {
            await client.ConnectAsync(options, CancellationToken.None);
        } catch {
            Console.WriteLine("Connecting to MQTT broker failed.");
        }
        Console.ReadLine();
    }
}

        上述代码创建了一个新的 MQTT 客户端,并订阅了“test/topic”主题。当收到该主题的消息时,会调用 UseApplicationMessageReceivedHandler 方法,并在控制台上显示该消息。

        UseConnectedHandler 和 UseDisconnectedHandler 方法处理连接和断开连接事件。当客户端连接到 MQTT 代理时会调用 UseConnectedHandler 方法,当客户端与 MQTT 代理断开连接时会调用 UseDisconnectedHandler 方法。

结论

        在本文中,我们讨论了如何使用 MQTTnet 库在 .NET 7 中实现 MQTT 消费者。我们创建了一个控制台应用程序,用于订阅主题并从 MQTT 代理接收消息。

        MQTT 是一种功能强大的消息传递协议,可用于各种应用,包括物联网 (IoT) 和 M2M 通信。借助 MQTTnet 库,可以轻松地在 .NET 7 中实现 MQTT 客户端,并且该库提供了一系列功能。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 


网站公告

今日签到

点亮在社区的每一天
去签到