【发布时间】:2021-11-12 10:15:37
【问题描述】:
我有一个 .Net/UWP 应用程序,我需要修改它以通过 AWS 上的 MQTT 发送状态。我看到很多关于如何使用其他语言发布/订阅的示例,但对于 .Net,我发现的信息似乎已经过时并且不再适用。
.Net AWSSDK 中是否有与AWSIotClient 类(来自Java)等效的内容?有什么方法可以通过 .Net 与 AWS 进行通信?
【问题讨论】:
我有一个 .Net/UWP 应用程序,我需要修改它以通过 AWS 上的 MQTT 发送状态。我看到很多关于如何使用其他语言发布/订阅的示例,但对于 .Net,我发现的信息似乎已经过时并且不再适用。
.Net AWSSDK 中是否有与AWSIotClient 类(来自Java)等效的内容?有什么方法可以通过 .Net 与 AWS 进行通信?
【问题讨论】:
遇到了同样的问题,但从未找到官方 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);
【讨论】: