Trouble connecting to aws iot using QMqtt and QSsl stack.
-
Brief Description: I am using QMqtt and QSsl stack to connect to perform a secure Mqtt connection and then publish some data on the aws server. But the Client state always stays on connecting never changes to connected
Expected behavior: First I tried connecting to test.mosquitto.org, I was able to connect and publish the data. So the expected behavior was to see some similar results.
Send_MqTT::Send_MqTT(QObject *parent) : QObject(parent) { m_socket=new QSslSocket(); m_client=new QMqttClient(); m_topicname = new QMqttTopicName(); m_topicname->setName("Pubtopic/test"); connect(m_client,&QMqttClient::stateChanged,[](QMqttClient::ClientState state){ if(state == QMqttClient::Disconnected) { qDebug()<<"State is Disconnected: "<<state; } else if(state == QMqttClient::Connecting) { qDebug()<<"State is Connecting: "<<state; } else if(state == QMqttClient::Connected) { qDebug()<<"State is Connected: "<<state; } }); connect(m_client,&QMqttClient::errorChanged,[](QMqttClient::ClientError error_state){ qDebug()<<"Error State is: "<<error_state; }); } void Send_MqTT::connect_toserver() { if(QSslSocket::supportsSsl()) { qDebug()<<"SSL SUPORTED"; m_socket->setLocalCertificate("<certificatelocation>",QSsl::Pem); m_socket->setPrivateKey("<private Key Location>",QSsl::Rsa,QSsl::Pem); m_client->setHostname("host-name"); m_client->setPort(8883); m_client->setTransport(m_socket,QMqttClient::SecureSocket); m_client->connectToHostEncrypted(); } }
Am I missing something. Do I have to set Mqtt connection properties before I begin the connection?
-
Hi,
Can you explain what result you are getting ?
What errors are you getting ?
What version of Qt are you using ? -
Hi,
Can you explain what result you are getting ?
What errors are you getting ?
What version of Qt are you using ?@sgaist The clientState stays on connecting and never goes to connected. Because of which I am unable to publish any data. The ClientState has to transition to connected for me to publish or subscribe
enum QMqttClient::ClientState Constant Value QMqttClient::Disconnected 0 QMqttClient::Connecting 1 QMqttClient::Connected 2
So the state always stays on connecting. I do not get any errors.
Qt version is 5.12.3
and system is an Ubuntu 18.04 -
From the looks of it, you didn't connect any of the QOpenSSLSocket error signals. You should add them.
-
@SGaist okay I will add that. But Don't you think if there was any error. Mqtt should also throw an error. Because if I remove a certificate or a private key from the file or add any wrong information, I do get an error stating that the transport properties are not set properly and the ClientState goes to disconnected it does not stays on connecting for a long period of time.