MQTTnet库在.NET环境中发布MQTT应用消息

这段代码展示了如何使用MQTTnet库在.NET环境中发布MQTT应用消息,包括发布单个消息和发布多个消息的示例。下面是对这些示例代码加上中文注释的版本:

MQTTnet库在.NET环境中发布MQTT应用消息概述

// 授权给 .NET Foundation 根据一个或多个协议。
// .NET Foundation 在 MIT 许可下授权此文件。
// 有关详细信息,请参阅项目根目录中的 LICENSE 文件。

// ReSharper 禁用全局未使用类型
// ReSharper 禁用全局未使用成员
// ReSharper 禁用不一致命名

using MQTTnet.Client;

namespace MQTTnet.Samples.Client;

public static class Client_Publish_Samples
{
    public static async Task Publish_Application_Message()
    {
        /*
         * 此示例推送一个包含主题和载荷的简单应用消息。
         *
         * 总是在存在的情况下使用构建器。此项目中的构建器被设计为
         * 向后兼容。通过其构造函数创建 _MqttApplicationMessage_ 也是
         * 支持的,但是这个类在未来的发布中可能会经常更改,而构建器不会,
         * 或者至少在可能的情况下提供向后兼容性。
         */

        var mqttFactory = new MqttFactory();

        using (var mqttClient = mqttFactory.CreateMqttClient())
        {
            var mqttClientOptions = new MqttClientOptionsBuilder()
                .WithTcpServer("broker.hivemq.com")
                .Build();

            await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None);

            var applicationMessage = new MqttApplicationMessageBuilder()
                .WithTopic("samples/temperature/living_room")
                .WithPayload("19.5")
                .Build();

            await mqttClient.PublishAsync(applicationMessage, CancellationToken.None);

            await mqttClient.DisconnectAsync();

            Console.WriteLine("MQTT 应用消息已发布。");
        }
    }

    public static async Task Publish_Multiple_Application_Messages()
    {
        /*
         * 此示例推送多个包含主题和载荷的简单应用消息。
         *
         * 详情见 _Publish_Application_Message_ 示例。
         */

        var mqttFactory = new MqttFactory();

        using (var mqttClient = mqttFactory.CreateMqttClient())
        {
            var mqttClientOptions = new MqttClientOptionsBuilder()
                .WithTcpServer("broker.hivemq.com")
                .Build();

            await mqttClient.ConnectAsync(mqttClientOptions, CancellationToken.None);

            var applicationMessage = new MqttApplicationMessageBuilder()
                .WithTopic("samples/temperature/living_room")
                .WithPayload("19.5")
                .Build();

            await mqttClient.PublishAsync(applicationMessage, CancellationToken.None);

            applicationMessage = new MqttApplicationMessageBuilder()
                .WithTopic("samples/temperature/living_room")
                .WithPayload("20.0")
                .Build();

            await mqttClient.PublishAsync(applicationMessage, CancellationToken.None);

            applicationMessage = new MqttApplicationMessageBuilder()
                .WithTopic("samples/temperature/living_room")
                .WithPayload("21.0")
                .Build();

            await mqttClient.PublishAsync(applicationMessage, CancellationToken.None);

            await mqttClient.DisconnectAsync();

            Console.WriteLine("MQTT 应用消息已发布。");
        }
    }
}

这些示例代码提供了使用MQTTnet库在.NET应用中与MQTT代理服务器连接并发布消息的基本方法。通过使用MqttClientOptionsBuilder来配置客户端选项,包括指定MQTT代理服务器的地址。然后,使用MqttApplicationMessageBuilder构建应用消息,并通过调用PublishAsync方法来发布这些消息。最后,示例中还展示了如何优雅地断开与MQTT代理服务器的连接。

技术术语(共 4 个)—— 点击展开
MQTT轻量级物联网消息传输协议,基于发布/订阅模式,适合低带宽不稳定网络
BrokerMQTT 代理服务器,负责接收发布消息并分发给订阅者
TopicMQTT 主题,消息路由的层级字符串,支持通配符 + 与 #
发布客户端向指定主题发送消息
来源/工具信息 —— 点击展开
来源 MQTT中文网(mqtt.cn) —— 国内领先的MQTT通信协议技术社区 分类 MQTT 编程 / 学习 字数 2283 字 · 阅读约 6 分钟 更新 2024-04-15 永久链接 https://www.mqtt.cn/1895.html
推荐工具:MQTT调试助手 微信小程序
MQTT中文网官方推出的MQTT调试工具,支持 MQTT 3.1.1/5.0 实时连接调试、主题订阅、消息收发监控与报文分析。 无需安装,微信搜索「MQTT调试助手」即可使用。 电脑端入口:https://www.mqtt.cn/mqtttool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 mqtt.cn
相关标签
📝 作者声明
本文由 MQTT中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复