[英]MQTT: cannot subsribe to the topic in Qt
我試圖從 localhost mqtt 代理讀取數據。 為此,我使用以下代碼:
m_client = new QMqttClient(this);
m_client->setHostname("127.0.0.1");
m_client->setPort(1883);
m_client->connectToHost();
connect(m_client,&QMqttClient::connected,this,&mqtt::isConnected);//um zu sehen, ob man verbundet hat
topic.setFilter("test");
auto subscription = m_client->subscribe(topic, qos0);
if(!subscription){
qDebug()<<"Could not subscribe. Is there a valid connection?";
return 0;
}
connect(m_sub, &QMqttSubscription::messageReceived, this, &mqtt::updateMessage);
return 1;
但是,當我檢查訂閱是否成功時:
if(!subscription){
qDebug()<<"Could not subscribe. Is there a valid connection?";
return 0;
}
我總是看到我沒有訂閱的消息。 盡管如此,我還是成功連接到了本地主機,所以我在控制台 output(最后一行)上看到了它:
Could not subscribe. Is there a valid connection?
qml: cannot connect
client is connected
我想知道client is connected
是最后一個,盡管沒有線程可以使代碼異步運行。 從理論上講,代碼必須等待,直到它連接到代理,然后運行 rest,但據我自己理解 - 它不等待連接並走得更遠,所以它不知道 - 它在哪里必須訂閱? 有什么想法嗎?
編輯:我忘記包含isConnected
方法:
void mqtt::isConnected()
{
qDebug()<<"client is connected";
}
訂閱必須在連接之后給出,因此您必須在 isConnected 方法中調用 subscribe:
void mqtt::isConnected()
{
qDebug() << "client is connected";
topic.setFilter("test");
auto subscription = m_client->subscribe(topic, qos0);
qDebug() << subscription
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.