使用 .NET 连接到 AWS MQTT

Connecting to AWS MQTT with .NET

我有一个 .Net/UWP 应用程序,我需要对其进行修改以通过 AWS 上的 MQTT 发送状态。我看到很多关于如何 publish/subscribe 使用其他语言的示例,但是对于 .Net,我发现的信息似乎已经过时并且不再适用。

在 .Net AWSSDK 中是否有与 AWSIotClient class(来自 Java)等效的东西?有什么方法可以从 .Net 与 AWS 通信吗?

有同样的问题,但从未找到 AWS 为 Iot Core 发布的官方 C# SDK,尽管您可以使用 MQTTnet.

与 AWS Iot Core 通信

这里有一个关于如何连接的片段:

var pfxCert = new X509Certificate2(X509Certificate2.CreateFromPemFile(pemCert,pemPrivKey).Export(X509ContentType.Pfx));
var factory = new MqttFactory();
var mqttClient = factory.CreateMqttClient();
var options = new MqttClientOptionsBuilder()
        .WithTcpServer(endpoint, 8883)
        .WithClientId(clientId)
        .WithCleanSession()
        .WithCommunicationTimeout(TimeSpan.FromSeconds(60))
        .WithTls(new MqttClientOptionsBuilderTlsParameters
        {
            UseTls = true,
            SslProtocol = System.Security.Authentication.SslProtocols.Tls12,
            IgnoreCertificateRevocationErrors = true,
            IgnoreCertificateChainErrors = true,
            AllowUntrustedCertificates = true,
            Certificates = new List<X509Certificate>
            {
                pfxCert
            }
        })
        .Build();

await mqttClient.ConnectAsync(options, CancellationToken.None);

发送消息:

var message = new MqttApplicationMessageBuilder()
            .WithTopic(topic)
            .WithPayload(jsonMessage)
            .Build();

var result = await _mqttClient.PublishAsync(message, CancellationToken.None);