fix network error

This commit is contained in:
Terrence
2025-02-18 05:14:53 +08:00
parent db712fa078
commit 35940f8bda
7 changed files with 99 additions and 65 deletions

View File

@@ -13,8 +13,6 @@
MqttProtocol::MqttProtocol() {
event_group_handle_ = xEventGroupCreate();
StartMqttClient();
}
MqttProtocol::~MqttProtocol() {
@@ -28,6 +26,10 @@ MqttProtocol::~MqttProtocol() {
vEventGroupDelete(event_group_handle_);
}
void MqttProtocol::Start() {
StartMqttClient();
}
bool MqttProtocol::StartMqttClient() {
if (mqtt_ != nullptr) {
ESP_LOGW(TAG, "Mqtt client already started");
@@ -98,7 +100,12 @@ void MqttProtocol::SendText(const std::string& text) {
if (publish_topic_.empty()) {
return;
}
mqtt_->Publish(publish_topic_, text);
if (!mqtt_->Publish(publish_topic_, text)) {
ESP_LOGE(TAG, "Failed to publish message");
if (on_network_error_ != nullptr) {
on_network_error_("发送失败,请检查网络");
}
}
}
void MqttProtocol::SendAudio(const std::vector<uint8_t>& data) {

View File

@@ -25,6 +25,7 @@ public:
MqttProtocol();
~MqttProtocol();
void Start() override;
void SendAudio(const std::vector<uint8_t>& data) override;
bool OpenAudioChannel() override;
void CloseAudioChannel() override;

View File

@@ -40,6 +40,7 @@ public:
void OnAudioChannelClosed(std::function<void()> callback);
void OnNetworkError(std::function<void(const std::string& message)> callback);
virtual void Start() = 0;
virtual bool OpenAudioChannel() = 0;
virtual void CloseAudioChannel() = 0;
virtual bool IsAudioChannelOpened() const = 0;

View File

@@ -21,6 +21,9 @@ WebsocketProtocol::~WebsocketProtocol() {
vEventGroupDelete(event_group_handle_);
}
void WebsocketProtocol::Start() {
}
void WebsocketProtocol::SendAudio(const std::vector<uint8_t>& data) {
if (websocket_ == nullptr) {
return;

View File

@@ -15,6 +15,7 @@ public:
WebsocketProtocol();
~WebsocketProtocol();
void Start() override;
void SendAudio(const std::vector<uint8_t>& data) override;
bool OpenAudioChannel() override;
void CloseAudioChannel() override;