mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-17 01:33:03 +08:00
65 lines
2.1 KiB
C#
65 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net.Security;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using MQTTnet;
|
|
using MQTTnet.Client;
|
|
using MQTTnet.Client.Options;
|
|
using MQTTnet.Client.Subscribing;
|
|
using MQTTnet.Formatter;
|
|
using MQTTnet.Protocol;
|
|
|
|
namespace AWSTest
|
|
{
|
|
class Program
|
|
{
|
|
static async Task Main(string[] args)
|
|
{
|
|
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
|
|
store.Open(OpenFlags.ReadWrite);
|
|
var thumbprint = @"b3a132f6db350ec01f557191abbb4436c9192460";
|
|
var cert = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false)[0];
|
|
|
|
// Create a new MQTT client.
|
|
var factory = new MqttFactory();
|
|
var mqttClient = factory.CreateMqttClient();
|
|
|
|
MqttClientOptionsBuilderTlsParameters tlsParameters = new MqttClientOptionsBuilderTlsParameters
|
|
{
|
|
UseTls = true,
|
|
Certificates = new [] {cert},
|
|
ApplicationProtocols = new List<SslApplicationProtocol> {new SslApplicationProtocol("x-amzn-mqtt-ca")}
|
|
};
|
|
|
|
// Create TCP based options using the builder.
|
|
var connectOptions = new MqttClientOptionsBuilder()
|
|
.WithClientId("test-1")
|
|
.WithCleanSession(false)
|
|
.WithTcpServer("a11ycnpbdonxr-ats.iot.eu-central-1.amazonaws.com", 443)
|
|
.WithProtocolVersion(MqttProtocolVersion.V311)
|
|
.WithTls(tlsParameters)
|
|
.Build();
|
|
|
|
var conResult = await mqttClient.ConnectAsync(connectOptions, CancellationToken.None);
|
|
Console.Out.WriteLine("Is session present: " + conResult.IsSessionPresent);
|
|
|
|
Console.Out.WriteLine(conResult);
|
|
mqttClient.UseApplicationMessageReceivedHandler(Handler);
|
|
var result = await mqttClient.SubscribeAsync(new MqttClientSubscribeOptions {TopicFilters = new List<MqttTopicFilter> {new MqttTopicFilter {QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce, Topic = "topic_1"}}}, CancellationToken.None);
|
|
|
|
Console.ReadLine();
|
|
|
|
}
|
|
|
|
private static Task Handler(MqttApplicationMessageReceivedEventArgs arg)
|
|
{
|
|
var message = Encoding.UTF8.GetString(arg.ApplicationMessage.Payload);
|
|
Console.Out.WriteLine(message);
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
}
|