【问题标题】:Connecting to AWS MQTT with .NET使用 .NET 连接到 AWS MQTT
【发布时间】:2021-11-12 10:15:37
【问题描述】:

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

.Net AWSSDK 中是否有与AWSIotClient 类(来自Java)等效的内容?有什么方法可以通过 .Net 与 AWS 进行通信?

【问题讨论】:

    标签: .net uwp aws-iot


    【解决方案1】:

    遇到了同样的问题,但从未找到官方 AWS 发布的用于 IoT Core 的 C# SDK,尽管您可以使用 MQTTnet 与 AWS IoT Core 通信。

    这是一个关于如何连接的 sn-p:

    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);
    

    【讨论】:

    • 将此标记为答案。它在 UWP 中不起作用。但它给了我一些可以使用的东西。 UWP 版本的 MQTT 没有一些我需要使用此代码的方法。我以后可能会翻译它。但这给了我一个工作的开始。谢谢。
    猜你喜欢
    • 2018-06-14
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    相关资源
    最近更新 更多