From 2d4b7a647ad033a4fd84b907210fb9cc17b43cb6 Mon Sep 17 00:00:00 2001 From: agessaman Date: Mon, 16 Feb 2026 09:41:53 -0800 Subject: [PATCH] Enhance MQTT client configuration by setting keepalive interval to 45 seconds to maintain WebSocket connections through Cloudflare proxy. --- src/helpers/bridges/MQTTBridge.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/helpers/bridges/MQTTBridge.cpp b/src/helpers/bridges/MQTTBridge.cpp index 4b778895..287bc5f0 100644 --- a/src/helpers/bridges/MQTTBridge.cpp +++ b/src/helpers/bridges/MQTTBridge.cpp @@ -3144,6 +3144,10 @@ void MQTTBridge::getClientVersion(char* buffer, size_t buffer_size) const { void MQTTBridge::optimizeMqttClientConfig(PsychicMqttClient* client, bool is_analyzer_client) { if (!client) return; + // Keepalive 45s: Cloudflare closes WebSocket connections after 100s idle (non-configurable). + // Sending PINGREQ every 45s keeps the connection alive through the proxy. + client->setKeepAlive(45); + // Use a single buffer size for all clients to reduce heap fragmentation: mixed sizes // (e.g. 640 vs 896) create different-sized holes that are harder to reuse on reconnect. // 896 is the minimum safe size for analyzer clients (CONNECT + 768-byte JWT); main