diff --git a/backend/app.py b/backend/app.py index 63a4c95..0e3b662 100644 --- a/backend/app.py +++ b/backend/app.py @@ -119,10 +119,6 @@ async def register(request: Request): """Register endpoint - routes to account service.""" return await _proxy_to_service("account", "register", request) -@app.api_route("/chat/ws", methods=["GET"]) -async def chat_websocket(request: Request): - """Chat WebSocket endpoint - routes to messaging service.""" - return await _proxy_to_service("messaging", "chat/ws", request) # API routes - route to appropriate microservices @app.api_route("/account/{path:path}", methods=["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"]) diff --git a/backend/routes/messaging.py b/backend/routes/messaging.py index f914bd0..2f2a6f9 100644 --- a/backend/routes/messaging.py +++ b/backend/routes/messaging.py @@ -1292,7 +1292,7 @@ class MessaggingSocketManager: self.ws_subscriptions[websocket] = set() # Import here to avoid circular import - from websocket.handlers import handler_registry + from backend.services.messaging.files.websocket.handlers import handler_registry while True: try: diff --git a/backend/services/messaging/files/websocket/handlers.py b/backend/services/messaging/files/websocket/handlers.py index aa33fc0..aece09c 100644 --- a/backend/services/messaging/files/websocket/handlers.py +++ b/backend/services/messaging/files/websocket/handlers.py @@ -6,8 +6,8 @@ from typing import Any from fastapi import HTTPException, WebSocket, Request from sqlalchemy.orm import Session -from websocket.registry import WebSocketHandlerRegistry -from routes.messaging import ( +from backend.services.messaging.files.websocket.registry import WebSocketHandlerRegistry +from backend.routes.messaging import ( MessaggingSocketManager, _send_message_internal, _edit_message_internal, @@ -17,7 +17,7 @@ from routes.messaging import ( add_reaction, add_dm_reaction, ) -from models import ( +from backend.shared.models import ( User, SendMessageRequest, EditMessageRequest, @@ -26,7 +26,7 @@ from models import ( DMReactionRequest, UpdateLog, ) -from security.audit import log_access, log_dm +from backend.security.audit import log_access, log_dm logger = logging.getLogger("uvicorn.error") diff --git a/deployment/frontend/server.ts b/deployment/frontend/server.ts index 5d58e8c..ce7b655 100644 --- a/deployment/frontend/server.ts +++ b/deployment/frontend/server.ts @@ -16,7 +16,13 @@ app.use('/api', createProxyMiddleware({ ws: true })); -// WebSockets are handled by the general API proxy above +// Direct WebSocket proxy for chat - bypass gateway +app.use('/api/chat/ws', createProxyMiddleware({ + target: 'http://messaging_service:8305', + changeOrigin: true, + pathRewrite: { '^/api/chat/ws': '/messaging/chat/ws' }, + ws: true +})); // Serve static files app.use(express.static(resolve(filePath)));