mirror of
https://github.com/esphome/esphome.git
synced 2025-10-30 06:33:51 +00:00
Webserver utilize Component Iterator to not overload eventstream (#3310)
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
#ifdef USE_ARDUINO
|
||||
|
||||
#include "list_entities.h"
|
||||
|
||||
#include "esphome/components/web_server_base/web_server_base.h"
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/core/controller.h"
|
||||
@@ -32,7 +34,7 @@ enum JsonDetail { DETAIL_ALL, DETAIL_STATE };
|
||||
*/
|
||||
class WebServer : public Controller, public Component, public AsyncWebHandler {
|
||||
public:
|
||||
WebServer(web_server_base::WebServerBase *base) : base_(base) {}
|
||||
WebServer(web_server_base::WebServerBase *base) : base_(base), entities_iterator_(ListEntitiesIterator(this)) {}
|
||||
|
||||
/** Set the URL to the CSS <link> that's sent to each client. Defaults to
|
||||
* https://esphome.io/_static/webserver-v1.min.css
|
||||
@@ -76,6 +78,7 @@ class WebServer : public Controller, public Component, public AsyncWebHandler {
|
||||
// (In most use cases you won't need these)
|
||||
/// Setup the internal web server and register handlers.
|
||||
void setup() override;
|
||||
void loop() override;
|
||||
|
||||
void dump_config() override;
|
||||
|
||||
@@ -217,8 +220,10 @@ class WebServer : public Controller, public Component, public AsyncWebHandler {
|
||||
bool isRequestHandlerTrivial() override;
|
||||
|
||||
protected:
|
||||
friend ListEntitiesIterator;
|
||||
web_server_base::WebServerBase *base_;
|
||||
AsyncEventSource events_{"/events"};
|
||||
ListEntitiesIterator entities_iterator_;
|
||||
const char *css_url_{nullptr};
|
||||
const char *css_include_{nullptr};
|
||||
const char *js_url_{nullptr};
|
||||
|
||||
Reference in New Issue
Block a user