Refactor code structure for improved readability and maintainability

This commit is contained in:
JSC
2025-07-27 14:24:11 +02:00
parent 0f605d7ed1
commit 2e87ff9927
8 changed files with 388 additions and 65 deletions

66
app/api/v1/socket.py Normal file
View File

@@ -0,0 +1,66 @@
"""Socket.IO API endpoints for WebSocket management."""
from fastapi import APIRouter, Depends
from app.core.dependencies import get_current_user
from app.models.user import User
from app.services.socket import socket_manager
router = APIRouter(prefix="/socket", tags=["socket"])
@router.get("/status")
async def get_socket_status(current_user: User = Depends(get_current_user)):
"""Get current socket connection status."""
connected_users = socket_manager.get_connected_users()
return {
"connected": str(current_user.id) in connected_users,
"user_id": current_user.id,
"total_connected": len(connected_users),
}
@router.post("/send-message")
async def send_message_to_user(
target_user_id: int,
message: str,
current_user: User = Depends(get_current_user),
):
"""Send a message to a specific user via WebSocket."""
success = await socket_manager.send_to_user(
str(target_user_id),
"user_message",
{
"from_user_id": current_user.id,
"from_user_name": current_user.name,
"message": message,
},
)
return {
"success": success,
"target_user_id": target_user_id,
"message": "Message sent" if success else "User not connected",
}
@router.post("/broadcast")
async def broadcast_message(
message: str,
current_user: User = Depends(get_current_user),
):
"""Broadcast a message to all connected users."""
await socket_manager.broadcast_to_all(
"broadcast_message",
{
"from_user_id": current_user.id,
"from_user_name": current_user.name,
"message": message,
},
)
return {
"success": True,
"message": "Message broadcasted to all users",
}