add tcp transport support

This commit is contained in:
Terrence
2024-10-10 21:41:20 +08:00
parent 073fd4046e
commit 56560685b1
2 changed files with 21 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
#include <BuiltinLed.h> #include <BuiltinLed.h>
#include <TcpTransport.h>
#include <TlsTransport.h> #include <TlsTransport.h>
#include <Ml307SslTransport.h> #include <Ml307SslTransport.h>
#include <WifiConfigurationAp.h> #include <WifiConfigurationAp.h>
@@ -433,7 +434,9 @@ void Application::AudioEncodeTask() {
auto protocol = AllocateBinaryProtocol(opus, opus_size); auto protocol = AllocateBinaryProtocol(opus, opus_size);
Schedule([this, protocol, opus_size]() { Schedule([this, protocol, opus_size]() {
if (ws_client_ && ws_client_->IsConnected()) { if (ws_client_ && ws_client_->IsConnected()) {
ws_client_->Send(protocol, sizeof(BinaryProtocol) + opus_size, true); if (!ws_client_->Send(protocol, sizeof(BinaryProtocol) + opus_size, true)) {
ESP_LOGE(TAG, "Failed to send audio data");
}
} }
heap_caps_free(protocol); heap_caps_free(protocol);
}); });
@@ -550,11 +553,16 @@ void Application::StartWebSocketClient() {
delete ws_client_; delete ws_client_;
} }
std::string url = CONFIG_WEBSOCKET_URL;
std::string token = "Bearer " + std::string(CONFIG_WEBSOCKET_ACCESS_TOKEN); std::string token = "Bearer " + std::string(CONFIG_WEBSOCKET_ACCESS_TOKEN);
#ifdef CONFIG_USE_ML307 #ifdef CONFIG_USE_ML307
ws_client_ = new WebSocket(new Ml307SslTransport(ml307_at_modem_, 0)); ws_client_ = new WebSocket(new Ml307SslTransport(ml307_at_modem_, 0));
#else #else
ws_client_ = new WebSocket(new TlsTransport()); if (url.find("wss://") == 0) {
ws_client_ = new WebSocket(new TlsTransport());
} else {
ws_client_ = new WebSocket(new TcpTransport());
}
#endif #endif
ws_client_->SetHeader("Authorization", token.c_str()); ws_client_->SetHeader("Authorization", token.c_str());
ws_client_->SetHeader("Device-Id", SystemInfo::GetMacAddress().c_str()); ws_client_->SetHeader("Device-Id", SystemInfo::GetMacAddress().c_str());
@@ -618,7 +626,16 @@ void Application::StartWebSocketClient() {
if (text != NULL) { if (text != NULL) {
ESP_LOGI(TAG, ">> %s", text->valuestring); ESP_LOGI(TAG, ">> %s", text->valuestring);
} }
} else if (strcmp(type->valuestring, "llm") == 0) {
auto emotion = cJSON_GetObjectItem(root, "emotion");
if (emotion != NULL) {
ESP_LOGD(TAG, "EMOTION: %s", emotion->valuestring);
}
} else {
ESP_LOGW(TAG, "Unknown message type: %s", type->valuestring);
} }
} else {
ESP_LOGE(TAG, "Missing message type, data: %s", data);
} }
cJSON_Delete(root); cJSON_Delete(root);
} }
@@ -640,7 +657,7 @@ void Application::StartWebSocketClient() {
}); });
}); });
if (!ws_client_->Connect(CONFIG_WEBSOCKET_URL)) { if (!ws_client_->Connect(url.c_str())) {
ESP_LOGE(TAG, "Failed to connect to websocket server"); ESP_LOGE(TAG, "Failed to connect to websocket server");
return; return;
} }

View File

@@ -3,7 +3,7 @@ dependencies:
78/esp-builtin-led: "^1.0.2" 78/esp-builtin-led: "^1.0.2"
78/esp-wifi-connect: "^1.1.0" 78/esp-wifi-connect: "^1.1.0"
78/esp-opus-encoder: "^1.0.2" 78/esp-opus-encoder: "^1.0.2"
78/esp-ml307: "^1.1.1" 78/esp-ml307: "^1.2.0"
espressif/esp-sr: "^1.9.0" espressif/esp-sr: "^1.9.0"
espressif/button: "^3.3.1" espressif/button: "^3.3.1"
lvgl/lvgl: "^8.4.0" lvgl/lvgl: "^8.4.0"