|
@@ -77,20 +77,16 @@ app.include_router(admin.router)
|
|
|
# WebSocket Global Handler (Centralized to handle various proxy prefixes)
|
|
# WebSocket Global Handler (Centralized to handle various proxy prefixes)
|
|
|
@app.websocket("/global")
|
|
@app.websocket("/global")
|
|
|
async def ws_global(websocket: WebSocket, token: str = Query(...)):
|
|
async def ws_global(websocket: WebSocket, token: str = Query(...)):
|
|
|
- print(f"DEBUG: WS Connection attempt with token: {token[:10]}...")
|
|
|
|
|
payload = auth_utils.decode_token(token)
|
|
payload = auth_utils.decode_token(token)
|
|
|
if not payload:
|
|
if not payload:
|
|
|
- print("DEBUG: WS Auth failed: Invalid token")
|
|
|
|
|
await websocket.close(code=4001)
|
|
await websocket.close(code=4001)
|
|
|
return
|
|
return
|
|
|
user_id = payload.get("id")
|
|
user_id = payload.get("id")
|
|
|
role = payload.get("role")
|
|
role = payload.get("role")
|
|
|
if not user_id:
|
|
if not user_id:
|
|
|
- print("DEBUG: WS Auth failed: No user ID in payload")
|
|
|
|
|
await websocket.close(code=4001)
|
|
await websocket.close(code=4001)
|
|
|
return
|
|
return
|
|
|
|
|
|
|
|
- print(f"DEBUG: WS Connected: user_id={user_id}, role={role}")
|
|
|
|
|
await global_manager.connect(websocket, user_id, role)
|
|
await global_manager.connect(websocket, user_id, role)
|
|
|
session_utils.track_user_ping(user_id)
|
|
session_utils.track_user_ping(user_id)
|
|
|
|
|
|
|
@@ -106,15 +102,12 @@ async def ws_global(websocket: WebSocket, token: str = Query(...)):
|
|
|
if data == "ping":
|
|
if data == "ping":
|
|
|
session_utils.track_user_ping(user_id)
|
|
session_utils.track_user_ping(user_id)
|
|
|
except WebSocketDisconnect:
|
|
except WebSocketDisconnect:
|
|
|
- print(f"DEBUG: WS Disconnected: user_id={user_id}")
|
|
|
|
|
global_manager.disconnect(websocket, user_id)
|
|
global_manager.disconnect(websocket, user_id)
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
- print(f"DEBUG: WS Error: {e}")
|
|
|
|
|
global_manager.disconnect(websocket, user_id)
|
|
global_manager.disconnect(websocket, user_id)
|
|
|
|
|
|
|
|
@app.websocket("/chat")
|
|
@app.websocket("/chat")
|
|
|
async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int = Query(...)):
|
|
async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int = Query(...)):
|
|
|
- print(f"DEBUG: Chat WS attempt: order_id={order_id}")
|
|
|
|
|
payload = auth_utils.decode_token(token)
|
|
payload = auth_utils.decode_token(token)
|
|
|
if not payload:
|
|
if not payload:
|
|
|
await websocket.close(code=4001)
|
|
await websocket.close(code=4001)
|
|
@@ -135,7 +128,6 @@ async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int =
|
|
|
await websocket.close(code=4003)
|
|
await websocket.close(code=4003)
|
|
|
return
|
|
return
|
|
|
|
|
|
|
|
- print(f"DEBUG: Chat WS connected: order_id={order_id}, user_id={user_id}")
|
|
|
|
|
await manager.connect(websocket, order_id, role)
|
|
await manager.connect(websocket, order_id, role)
|
|
|
try:
|
|
try:
|
|
|
while True:
|
|
while True:
|
|
@@ -153,10 +145,8 @@ async def ws_chat(websocket: WebSocket, token: str = Query(...), order_id: int =
|
|
|
db.execute_commit("UPDATE order_messages SET is_read = TRUE WHERE order_id = %s AND is_from_admin = TRUE AND is_read = FALSE", (order_id,))
|
|
db.execute_commit("UPDATE order_messages SET is_read = TRUE WHERE order_id = %s AND is_from_admin = TRUE AND is_read = FALSE", (order_id,))
|
|
|
await global_manager.notify_user(user_id)
|
|
await global_manager.notify_user(user_id)
|
|
|
except WebSocketDisconnect:
|
|
except WebSocketDisconnect:
|
|
|
- print(f"DEBUG: Chat WS disconnected: order_id={order_id}")
|
|
|
|
|
manager.disconnect(websocket, order_id)
|
|
manager.disconnect(websocket, order_id)
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
- print(f"DEBUG: Chat WS error: {e}")
|
|
|
|
|
manager.disconnect(websocket, order_id)
|
|
manager.disconnect(websocket, order_id)
|
|
|
|
|
|
|
|
# Mount Static Files
|
|
# Mount Static Files
|