From eb39add6fc20688faffe861c85d95a9d9f6ebd29 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sat, 19 Jan 2019 22:10:10 +0100 Subject: [PATCH] Fix nginx closing WebSocket connection after 60 seconds (#370) * Test * Add keepalive * Revert "Add keepalive" This reverts commit 8b92198122daa0f67856d114dde26ac542d93114. * Update dashboard.py * Revert * Lint --- esphomeyaml/api/client.py | 13 +++++++++---- esphomeyaml/dashboard/dashboard.py | 8 +++++++- esphomeyaml/dashboard/templates/index.html | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/esphomeyaml/api/client.py b/esphomeyaml/api/client.py index 446de042b5..e340e567ab 100644 --- a/esphomeyaml/api/client.py +++ b/esphomeyaml/api/client.py @@ -429,6 +429,8 @@ def run_logs(config, address): stopping = False retry_timer = [] + has_connects = [] + def try_connect(tries=0, is_disconnect=True): if stopping: return @@ -451,8 +453,13 @@ def run_logs(config, address): return wait_time = min(2**tries, 300) - _LOGGER.warning(u"Couldn't connect to API (%s). Trying to reconnect in %s seconds", - error, wait_time) + if not has_connects: + _LOGGER.warning(u"Initial connection failed. The ESP might not be connected" + u"to WiFi yet (%s). Re-Trying in %s seconds", + error, wait_time) + else: + _LOGGER.warning(u"Couldn't connect to API (%s). Trying to reconnect in %s seconds", + error, wait_time) timer = threading.Timer(wait_time, functools.partial(try_connect, tries + 1, is_disconnect)) timer.start() retry_timer.append(timer) @@ -465,8 +472,6 @@ def run_logs(config, address): 'TCP buffer - This is only cosmetic)') safe_print(time_ + text) - has_connects = [] - def on_login(): try: cli.subscribe_logs(on_log, dump_config=not has_connects) diff --git a/esphomeyaml/dashboard/dashboard.py b/esphomeyaml/dashboard/dashboard.py index 58829f5718..e9acd001c1 100644 --- a/esphomeyaml/dashboard/dashboard.py +++ b/esphomeyaml/dashboard/dashboard.py @@ -511,6 +511,12 @@ def make_app(debug=False): self.set_header('Cache-Control', 'no-store, no-cache, must-revalidate, max-age=0') static_path = os.path.join(os.path.dirname(__file__), 'static') + settings = { + 'debug': debug, + 'cookie_secret': COOKIE_SECRET, + 'log_function': log_function, + 'websocket_ping_interval': 30.0, + } app = tornado.web.Application([ (r"/", MainRequestHandler), (r"/login", LoginHandler), @@ -527,7 +533,7 @@ def make_app(debug=False): (r"/ping", PingRequestHandler), (r"/wizard.html", WizardRequestHandler), (r'/static/(.*)', StaticFileHandler, {'path': static_path}), - ], debug=debug, cookie_secret=COOKIE_SECRET, log_function=log_function) + ], **settings) if debug: _STATIC_FILE_HASHES.clear() diff --git a/esphomeyaml/dashboard/templates/index.html b/esphomeyaml/dashboard/templates/index.html index a6bd41c839..a3a330e8ae 100644 --- a/esphomeyaml/dashboard/templates/index.html +++ b/esphomeyaml/dashboard/templates/index.html @@ -409,7 +409,7 @@