websocket fix

This commit is contained in:
2025-10-24 20:10:40 +02:00
parent 731fd56768
commit 4e08d81bb0
5 changed files with 28 additions and 28 deletions

View File

@@ -21,7 +21,6 @@ from src.server.services.websocket_service import (
WebSocketService,
get_websocket_service,
)
from src.server.utils.dependencies import get_current_user_optional
logger = structlog.get_logger(__name__)
@@ -31,8 +30,8 @@ router = APIRouter(prefix="/ws", tags=["websocket"])
@router.websocket("/connect")
async def websocket_endpoint(
websocket: WebSocket,
token: Optional[str] = None,
ws_service: WebSocketService = Depends(get_websocket_service),
user_id: Optional[str] = Depends(get_current_user_optional),
):
"""WebSocket endpoint for client connections.
@@ -40,6 +39,10 @@ async def websocket_endpoint(
The connection is maintained until the client disconnects or
an error occurs.
Authentication:
- Optional token can be passed as query parameter: /ws/connect?token=<jwt>
- Unauthenticated connections are allowed but may have limited access
Message flow:
1. Client connects
2. Server sends "connected" message
@@ -70,6 +73,20 @@ async def websocket_endpoint(
```
"""
connection_id = str(uuid.uuid4())
user_id: Optional[str] = None
# Optional: Validate token if provided
if token:
try:
from src.server.services.auth_service import auth_service
session = auth_service.create_session_model(token)
user_id = session.user_id
except Exception as e:
logger.warning(
"Invalid WebSocket authentication token",
connection_id=connection_id,
error=str(e),
)
try:
# Accept connection and register with service