51 lines
1.3 KiB
C#
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();
|
|
}
|
|
}
|
|
|
|
|
|
} |