first commit
This commit is contained in:
parent
75addb10ee
commit
679366fa8f
@ -38,6 +38,7 @@ private:
|
|||||||
|
|
||||||
// mqtt::callback 实现
|
// mqtt::callback 实现
|
||||||
void connection_lost(const std::string &cause) override;
|
void connection_lost(const std::string &cause) override;
|
||||||
|
void connected(const std::string &cause) override;
|
||||||
void message_arrived(mqtt::const_message_ptr msg) override;
|
void message_arrived(mqtt::const_message_ptr msg) override;
|
||||||
void delivery_complete(mqtt::delivery_token_ptr token) override {}
|
void delivery_complete(mqtt::delivery_token_ptr token) override {}
|
||||||
|
|
||||||
|
|||||||
@ -37,24 +37,18 @@ void MQTTClient::connect()
|
|||||||
.password(config_.password)
|
.password(config_.password)
|
||||||
.finalize();
|
.finalize();
|
||||||
|
|
||||||
auto tok = client_->connect(connOpts); // 异步连接
|
auto tok = client_->connect(connOpts);
|
||||||
if (!tok->wait_for(std::chrono::seconds(2))) // 设置超时
|
tok->wait(); // 阻塞直到连接成功或失败,不用 wait_for(2s)
|
||||||
{
|
|
||||||
LOG_WARN("[MQTT] Connect timed out to broker: " + config_.server_ip);
|
|
||||||
startReconnect();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
LOG_INFO("[MQTT] Connected to broker: " + config_.server_ip);
|
||||||
connected_ = true;
|
connected_ = true;
|
||||||
reconnect_active_ = false;
|
|
||||||
|
|
||||||
if (on_connect_)
|
if (on_connect_)
|
||||||
on_connect_();
|
on_connect_();
|
||||||
}
|
}
|
||||||
catch (const mqtt::exception &e)
|
catch (const mqtt::exception &e)
|
||||||
{
|
{
|
||||||
LOG_ERROR("[MQTT] Connect failed: " + std::string(e.what()));
|
LOG_ERROR("[MQTT] Connect failed: " + std::string(e.what()));
|
||||||
startReconnect();
|
// startReconnect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,9 +152,19 @@ void MQTTClient::connection_lost(const std::string &cause)
|
|||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(mutex_);
|
std::lock_guard<std::mutex> lock(mutex_);
|
||||||
connected_ = false;
|
connected_ = false;
|
||||||
|
LOG_WARN("[MQTT] Connection lost: " + cause);
|
||||||
if (on_disconnect_)
|
if (on_disconnect_)
|
||||||
on_disconnect_();
|
on_disconnect_();
|
||||||
startReconnect();
|
// startReconnect();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MQTTClient::connected(const std::string &cause)
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> lock(mutex_);
|
||||||
|
connected_ = true;
|
||||||
|
LOG_INFO("[MQTT] Reconnected: " + cause);
|
||||||
|
if (on_connect_)
|
||||||
|
on_connect_();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MQTTClient::message_arrived(mqtt::const_message_ptr msg)
|
void MQTTClient::message_arrived(mqtt::const_message_ptr msg)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user