2024-08-27 15:21:16 +08:00

49 lines
1.2 KiB
C#

using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
using System;
using System.Threading.Tasks;
namespace DOAN.Common
{
public class MqttPublisher
{
private IMqttClient _client;
private MqttClientOptions _options;
public MqttPublisher(string brokerAddress, string clientId)
{
_client = new MqttFactory().CreateMqttClient();
_options = new MqttClientOptionsBuilder()
.WithTcpServer(brokerAddress)
.WithClientId(clientId)
.Build();
}
public async Task ConnectAsync()
{
await _client.ConnectAsync(_options);
}
public async Task PublishAsync(string topic, string payload, MqttQualityOfServiceLevel qualityOfService = MqttQualityOfServiceLevel.AtLeastOnce)
{
var applicationMessage = new MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload(payload)
.WithQualityOfServiceLevel(qualityOfService)
.Build();
await _client.PublishAsync(applicationMessage);
}
public async Task DisconnectAsync()
{
await _client.DisconnectAsync();
}
}
}