.net - 使用 .NET 连接到 AWS MQTT
问题描述
我有一个 .Net/UWP 应用程序,我需要修改它以通过 AWS 上的 MQTT 发送状态。我看到很多关于如何使用其他语言发布/订阅的示例,但是对于 .Net,我发现的信息似乎已经过时并且不再适用。
在 .Net AWSSDK 中是否有任何与AWSIotClient
类(来自 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);
推荐阅读
- javascript - Angular 生产无法在网站上运行
- html - 如何在网站上使用基于表单的登录来实现不同的领域?
- angular - Angular 多显示器应用程序
- if-statement - Streamlabs Chatbot 对 if else "request" 执行响应
- javascript - AngularJS 架构:单仓库或多仓库
- javascript - 使用属性样式或一些内联样式技巧来设置表单占位符的样式
- sql-server - 没有游标的 T-SQL 插入和更新外键
- html - 悬停时平行四边形倾斜
- arm - 在 WEC2013 上运行旧 ARM 代码(移植到 2013)
- arrays - 对数组的每个元素进行 foreach