diff --git a/service.py b/service.py index aa5cc74..993bcaa 100644 --- a/service.py +++ b/service.py @@ -130,12 +130,19 @@ class MeshApi(MeshArgsParse): super().__init__(args) self.app = FastAPI(lifespan=self.lifespan) self.tasks = [] + self.listeners = [] #[{"func": func, "args":[]}] from authManager import AuthManager self.authManager = AuthManager(args) @asynccontextmanager async def lifespan(self, app: FastAPI): - logger.info("web started, now create bg tasks") + logger.info("web started") + + logger.info("create mesh listeners") + for listener in self.listeners: + asyncio.create_task(listener["func"](*listener["args"])) + + logger.info("now create bg tasks") for task in self.tasks: asyncio.create_task(task()) yield @@ -244,11 +251,10 @@ class MeshCenter(MeshMultiListener, MeshApi, MongoDriver, MeshArgsParse): traceback.print_exc() def buildBackgroundTasks(self): - #input queue + #input queue #[{"func": func, "args":[]}] for device in self.devices: - async def mL(): - await self.meshListener(device, self.queue) - self.tasks.append(mL) + logger.debug("Append mesh listener", device) + self.listeners.append({"func": self.meshListener, "args":[device, self.queue]}) #output async def handlerTask(): diff --git a/transport_ws.py b/transport_ws.py index daf11b1..2edf437 100644 --- a/transport_ws.py +++ b/transport_ws.py @@ -1,4 +1,4 @@ -from fastapi import FastAPI, WebSocket, WebSocketDisconnect +from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Query from threading import Thread import uvicorn import asyncio @@ -13,8 +13,9 @@ class WSTransport: self.thread = None self.app = FastAPI() - @self.app.websocket(self.path + "/{token}") - async def websocket_endpoint(*, websocket: WebSocket, token: str): + + @self.app.websocket(self.path) + async def websocket_endpoint(*, websocket: WebSocket, token: str = Query("")): if token != self.token: return diff --git a/ui/srv.conf b/ui/srv.conf index fd31fa8..439a242 100644 --- a/ui/srv.conf +++ b/ui/srv.conf @@ -17,7 +17,7 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } - location /ws/0/ { + location /ws/0 { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade;