使用 .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);
我有一个 .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);