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代理服务器的连接。
回复