0

I'm trying to connect to Mosquitto using MQTTnet. I am able to receive messages but IsConnected property is false. Anyone know why? Only property iStart is set to true. The problem seems to be with the Mosquitto host.

mosquitto.conf is mostly defaults. I only have these parameters set:

allow_anonymous true
password_file C:\mosquitto\passwd
tls_version tlsv1.2
log_dest file C:\mosquitto\log\mosquitto.log

Log file is empty.

class Program
    {
        static async Task Main()
        {
            var mqttClientId = "MyClientId";             // Unique ClientId or pass a GUID as string for something random
            var mqttBrokerAddress = "localhost";         // hostname or IP address of your MQTT broker
            var mqttBrokerUsername = "guest";       // Broker Auth username if using auth
            var mqttBrokerPassword = "guest";       // Broker Auth password if using auth
            var topic = "topic";                 // topic to subscribe to
            var mqttClient = new MqttFactory().CreateManagedMqttClient();
            var mqttClientOptions = new ManagedMqttClientOptionsBuilder()
                        .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
                        .WithClientOptions(new MqttClientOptionsBuilder()
                            .WithTcpServer(mqttBrokerAddress, 1883)
                            .WithCredentials(mqttBrokerUsername, mqttBrokerPassword)    // Remove this line if no auth
                            .WithCleanSession().WithKeepAlivePeriod(new TimeSpan(1))//.WithTls(tlsOptions)
                            .Build()
                        )
                        .Build();

            mqttClient.ApplicationMessageReceivedAsync += async e => MqttOnNewMessage(e);
            mqttClient.ConnectedAsync += async e => MqttOnConnected(e);
            mqttClient.DisconnectedAsync += async e => MqttOnDisconnected(e);
            mqttClient.SynchronizingSubscriptionsFailedAsync += async e => test(e);
            mqttClient.ConnectingFailedAsync += async e => test2(e);
            var aaa = new List<MqttTopicFilter>();
            var bbb = new MqttTopicFilterBuilder().WithTopic(topic).Build();
            aaa.Add(bbb);
            try
            {
                await mqttClient.SubscribeAsync(aaa);
                await mqttClient.StartAsync(mqttClientOptions);
                System.Console.WriteLine(mqttClient.IsConnected); 
            }
            catch (Exception ex)
            {

                throw;
            }
            Console.ReadLine();
        }

        private static void test2(ConnectingFailedEventArgs e)
        {
            Console.WriteLine();
        }

        private static void test(ManagedProcessFailedEventArgs e)
        {
            Console.WriteLine();
        }

        private static void MqttOnNewMessage(MqttApplicationMessageReceivedEventArgs e)
        {
            // Do something with each incoming message from the topic

            Console.WriteLine($"MQTT Client: OnNewMessage Topic: {e.ApplicationMessage.Topic} / Message: {e.ApplicationMessage.Payload}");
        }

        private static void MqttOnConnected(MqttClientConnectedEventArgs e) => Console.WriteLine($"MQTT Client: Connected with result: {e.ConnectResult.ResultCode}");

        private static void MqttOnDisconnected(MqttClientDisconnectedEventArgs e) => Console.WriteLine($"MQTT Client: Broker connection lost with reason: {e.Reason}.");
    }
  • The code shown does not appear to access `IsConnected`, please show where/how you are reading this. What problem is this causing (you say you can receive messages; what else is not working?). Increasing the Mosquitto log level (e.g. `log_type all`) might provide information that helps you trace your issue (e.g. if the client is disconnecting). – Brits Sep 30 '22 at 07:10
  • I added the line System.Console.WriteLine (mqttClient.IsConnected); which returns false. Everything works fine but status is bad. I tried to connect to test.mosquitto.org and the IsConnected status is true there. No errors in ConnectingFailedAsync. – Kacper Wojnar Sep 30 '22 at 07:19

0 Answers0