4. Improve memory usage related to websocket #182
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces
DASH_PARTIAL_UPDATE_JSON_SIZE
(defaulted toDASH_LAYOUT_JSON_SIZE
for backward compatibility). This allows to reduce the reserved memory for most of the subsequent websocket push after the initial load of the page.Also introduced
DASH_MAX_WS_CLIENTS
(defaulted toDEFAULT_MAX_WS_CLIENTS
) to allow controlling the maximum number of WebSocket clients for DASH. The default is 8 for ESP32 (comes from the ESPAsyncWebServer lib).The cleanup code has been added to make sure, before doing a WS push, that older clients gets closed in case the count is more than the allowed limit.
Also, a quick check has been added to avoid doing any memory intensive operation when the app triggers and dashboard.update() in case there is no client connected.
Also added
hasClient()
to allow callers to know if some WS clients are connected (i.e. to improve the update code to avoid running it)