2024-08-27 17:29:21 +08:00

51 lines
1.3 KiB
C#

using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
using System;
using System.Net;
using System.Threading.Tasks;
namespace DOAN.Common
{
public class MqttPublisher
{
private IMqttClient _client;
private MqttClientOptions _options;
public MqttPublisher(string brokerAddress, string clientId, int port)
{
_client = new MqttFactory().CreateMqttClient();
_options = new MqttClientOptionsBuilder()
.WithTcpServer(brokerAddress,port)
.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)
.WithRetainFlag(true)
.WithQualityOfServiceLevel(qualityOfService)
.Build();
await _client.PublishAsync(applicationMessage);
}
public async Task DisconnectAsync()
{
await _client.DisconnectAsync();
}
}
}