From e7f78c52da0c7ec55a4a3e426e959fac5ce0d781 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 2 Aug 2024 15:35:36 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=87=20Adds=20hasSubcribers=20to=20even?= =?UTF-8?q?t=20socket=20for=20early=20return?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/lib/ESP32-sveltekit/AnalyticsService.h | 1 + esp32/lib/ESP32-sveltekit/EventSocket.cpp | 2 ++ esp32/lib/ESP32-sveltekit/EventSocket.h | 2 ++ 3 files changed, 5 insertions(+) diff --git a/esp32/lib/ESP32-sveltekit/AnalyticsService.h b/esp32/lib/ESP32-sveltekit/AnalyticsService.h index 2f9b754..92f5f90 100644 --- a/esp32/lib/ESP32-sveltekit/AnalyticsService.h +++ b/esp32/lib/ESP32-sveltekit/AnalyticsService.h @@ -39,6 +39,7 @@ class AnalyticsService { TaskManager *_taskManager; void updateAnalytics() { + if (!_socket->hasSubscribers(EVENT_ANALYTICS)) return; doc.clear(); doc["uptime"] = millis() / 1000; doc["free_heap"] = ESP.getFreeHeap(); diff --git a/esp32/lib/ESP32-sveltekit/EventSocket.cpp b/esp32/lib/ESP32-sveltekit/EventSocket.cpp index b3cc737..5eafe6a 100644 --- a/esp32/lib/ESP32-sveltekit/EventSocket.cpp +++ b/esp32/lib/ESP32-sveltekit/EventSocket.cpp @@ -125,6 +125,8 @@ esp_err_t EventSocket::onFrame(PsychicWebSocketRequest *request, httpd_ws_frame return ESP_OK; } +bool EventSocket::hasSubscribers(const char *event) { return !client_subscriptions[event].empty(); } + void EventSocket::emit(const char *event, const char *payload, const char *originId, bool onlyToSameOrigin) { int originSubscriptionId = originId[0] ? atoi(originId) : -1; xSemaphoreTake(clientSubscriptionsMutex, portMAX_DELAY); diff --git a/esp32/lib/ESP32-sveltekit/EventSocket.h b/esp32/lib/ESP32-sveltekit/EventSocket.h index 4b00783..0a6f632 100644 --- a/esp32/lib/ESP32-sveltekit/EventSocket.h +++ b/esp32/lib/ESP32-sveltekit/EventSocket.h @@ -22,6 +22,8 @@ class EventSocket { void begin(); + bool hasSubscribers(const char *event); + void onEvent(String event, EventCallback callback); void onSubscribe(String event, SubscribeCallback callback);