From 24400e0c8c5b46dc94212aae5ee79d8a896dea75 Mon Sep 17 00:00:00 2001 From: Rodja Trappe Date: Mon, 17 Jul 2023 12:04:17 +0200 Subject: [PATCH] on air: handle reconnect requests and failures --- nicegui/air.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/nicegui/air.py b/nicegui/air.py index 24d454a6d..d6abd8c73 100644 --- a/nicegui/air.py +++ b/nicegui/air.py @@ -95,15 +95,22 @@ async def on_move() -> None: print('Sorry, you have reached the time limit of this NiceGUI On Air preview.', flush=True) await self.connect() + @self.relay.on('reconnect') + async def on_reconnect(data: Dict[str, Any]) -> None: + await self.connect() + async def connect(self) -> None: try: if self.relay.connected: await self.relay.disconnect() + await asyncio.sleep(1) await self.relay.connect( f'{RELAY_HOST}?device_token={self.token}', socketio_path='/on_air/socket.io', transports=['websocket', 'polling'], ) + except socketio.exceptions.ConnectionError: + await self.connect() except Exception: logging.exception('Could not connect to NiceGUI On Air server.') print('Could not connect to NiceGUI On Air server.', flush=True)