using System;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Options;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Disconnecting;
using MQTTnet.Client.Receiving;
class Program
{
static async Task Main(string[] args)
{
// 创建一个MQTT客户端工厂
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
// 配置客户端连接选项
var options = new MqttClientOptionsBuilder()
.WithTcpServer("broker.hivemq.com") // MQTT代理服务器地址
.WithClientId("client_id_123") // 客户端ID
.Build();
// 订阅消息事件处理程序
mqttClient.UseConnectedHandler(async e =>
{
Console.WriteLine("已连接到MQTT代理");
// 订阅主题
var subscribeOptions = new MqttTopicFilterBuilder()
.WithTopic("test/topic")
.Build();
await mqttClient.SubscribeAsync(subscribeOptions);
Console.WriteLine("订阅了主题: test/topic");
});
// 接收消息事件处理程序
mqttClient.UseApplicationMessageReceivedHandler(e =>
{
Console.WriteLine($"收到消息: {e.ApplicationMessage.Topic} - {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}");
});
// 断开连接事件处理程序
mqttClient.UseDisconnectedHandler(e =>
{
Console.WriteLine("已断开与MQTT代理的连接");
});
// 连接到MQTT代理
await mqttClient.ConnectAsync(options);
// 等待用户输入以保持控制台应用程序运行
Console.ReadLine();
// 断开连接
await mqttClient.DisconnectAsync();
}
}
MqttFactory
创建一个MQTT客户端实例。MqttClientOptionsBuilder
配置客户端连接选项,包括代理服务器地址和客户端ID。UseConnectedHandler
事件,并在其中订阅指定的主题。UseApplicationMessageReceivedHandler
事件,打印出消息内容。UseDisconnectedHandler
事件。ConnectAsync
方法连接到MQTT代理。DisconnectAsync
方法断开与MQTT代理的连接。上一篇:c# 关键字
下一篇:c# using()
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站