diff options
| -rw-r--r-- | backend/decky_loader/loader.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/backend/decky_loader/loader.py b/backend/decky_loader/loader.py index 7567912c..fa855c0a 100644 --- a/backend/decky_loader/loader.py +++ b/backend/decky_loader/loader.py @@ -89,6 +89,7 @@ class Loader: self.loop.create_task(self.enable_reload_wait()) server_instance.web_app.add_routes([ + web.get("/socket", self.handle_ws), web.get("/frontend/{path:.*}", self.handle_frontend_assets), web.get("/locales/{path:.*}", self.handle_frontend_locales), web.get("/plugins", self.get_plugins), @@ -98,6 +99,24 @@ class Loader: web.post("/plugins/{plugin_name}/reload", self.handle_backend_reload_request) ]) + async def handle_ws(self, request: web.Request): + self.logger.debug('Websocket connection starting') + ws = web.WebSocketResponse() + await ws.prepare(request) + self.logger.debug('Websocket connection ready') + + async for msg in ws: + self.logger.debug(msg) + if msg.type == WSMsgType.TEXT: + self.logger.debug(msg.data) + if msg.data == 'close': + await ws.close() + else: + await ws.send_str(msg.data + '/answer') + + self.logger.debug('Websocket connection closed') + return ws + async def enable_reload_wait(self): if self.live_reload: await sleep(10) |
