0

我尝试使用 MQTTnet 连接 mqtt。

但似乎不起作用,它会显示错误消息:

无法连接远程服务器,请求被中止:无法创建 SSL/TLS 安全通道。

我还在 Windows 事件中发现了错误消息:

从远程端点收到致命警报。TLS 协议定义的致命警报代码为 40。

using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Client.Connecting;
using MQTTnet.Client.Options;

public override void Run()
{
    var option = new MqttClientOptionsBuilder()
                    .WithWebSocketServer("wss://mymqttserver:443")
                    .WithClientId(Guid.NewGuid().ToString())
                    .WithTls(new MqttClientOptionsBuilderTlsParameters()
                    {
                        AllowUntrustedCertificates = true,
                        UseTls = true,
                        SslProtocol = SslProtocols.Tls12,
                        CertificateValidationCallback = delegate { return true; },
                    })
                    .WithCleanSession()
                    .Build();
    var mqtt = new MqttFactory().CreateMqttClient() as MqttClient;
    mqtt.ConnectAsync(option).Wait();
    
    string convertMsg = JsonConvert.SerializeObject("Mqtt Connect Successfully!!");

    var appMsg = new MqttApplicationMessage();
    appMsg.Payload = Encoding.UTF8.GetBytes(convertMsg);
    appMsg.Topic = "myTopic";
    appMsg.QualityOfServiceLevel = MqttQualityOfServiceLevel.AtLeastOnce;
    appMsg.Retain = false;

    mqttClient.PublishAsync(appMsg).Wait();
}

我还尝试将我的 mqtt 服务器与第三方应用程序连接起来。

可以连接成功,所以我的mqtt服务器应该没问题。

但是不知道为什么不能用c#连接。

在此处输入图像描述

4

1 回答 1

0

在行

    .WithWebSocketServer("wss://mymqttserver:443")

您必须删除“wss://”,因为已经使用方法“.WithWebSocketServer”指定了它。所以,你会有

   .WithWebSocketServer("mymqttserver:443")

只需使用服务器和端口。

于 2022-02-11T12:52:50.690 回答