feat: Enhance stream processing and SocketIO services with app context management

This commit is contained in:
JSC
2025-07-07 21:17:51 +02:00
parent e7d958eb39
commit 9ac55f8904
4 changed files with 32 additions and 55 deletions

View File

@@ -9,12 +9,6 @@ from app import socketio
logger = logging.getLogger(__name__)
# Add debug print to ensure this module is loaded
print(f"🔧 SocketIO Service: Module loaded, logger level: {logger.level}")
print(f"🔧 SocketIO Service: Effective logger level: {logger.getEffectiveLevel()}")
print(f"🔧 SocketIO Service: Parent logger handlers: {logger.parent.handlers}")
print(f"🔧 SocketIO Service: Logger handlers: {logger.handlers}")
class SocketIOService:
"""Service for managing SocketIO connections and user rooms."""
@@ -102,33 +96,23 @@ class SocketIOService:
@socketio.on("connect")
def handle_connect(auth=None):
"""Handle client connection."""
print(f"🔌 CONNECT EVENT HANDLER CALLED: {request.sid}")
try:
logger.info(f"SocketIO connection established from {request.remote_addr}")
logger.info(f"Session ID: {request.sid}")
logger.info(f"Cookies: {request.cookies}")
print(f"🔌 CONNECT SUCCESS: {request.sid}")
except Exception:
logger.exception("Error handling SocketIO connection")
print(f"🔌 CONNECT ERROR: {request.sid}")
disconnect()
@socketio.on("authenticate")
def handle_authenticate(data):
"""Handle authentication after connection."""
print(f"🔐 AUTHENTICATE EVENT HANDLER CALLED: {request.sid}")
logger.info(f"🔐 SOCKETIO EVENT: authenticate received from {request.sid}")
logger.info(f"🔐 Auth data: {data}")
logger.info(f"🔐 Request cookies: {dict(request.cookies)}")
try:
user = SocketIOService.get_user_from_socketio()
logger.info(f"🔐 User lookup result: {user}")
if not user:
logger.warning("🔐 Authentication failed - no user found")
logger.warning("SocketIO authentication failed - no user found")
emit("auth_error", {"error": "Authentication failed"})
disconnect()
return
@@ -139,14 +123,14 @@ def handle_authenticate(data):
# Join user-specific room
join_room(user_room)
logger.info(f"🔐 User {user_id} authenticated and joined room {user_room}")
logger.info(f"User {user_id} authenticated and joined room {user_room}")
# Send current credits on authentication
emit("auth_success", {"user": user})
emit("credits_changed", {"credits": user["credits"]})
except Exception:
logger.exception("🔐 Error handling SocketIO authentication")
logger.exception("Error handling SocketIO authentication")
emit("auth_error", {"error": "Authentication failed"})
disconnect()
@@ -154,15 +138,13 @@ def handle_authenticate(data):
@socketio.on("test_event")
def handle_test_event(data):
"""Test handler to verify SocketIO events are working."""
print(f"🧪 TEST EVENT HANDLER CALLED: {request.sid}")
logger.info(f"🧪 TEST EVENT received: {data}")
logger.debug(f"Test event received: {data}")
emit("test_response", {"message": "Test event received successfully"})
@socketio.on("disconnect")
def handle_disconnect():
"""Handle client disconnection."""
print(f"🔌 DISCONNECT EVENT HANDLER CALLED: {request.sid}")
try:
user = SocketIOService.get_user_from_socketio()
if user:
@@ -177,20 +159,3 @@ def handle_disconnect():
# Export the service instance
socketio_service = SocketIOService()
# Debug: Print registered event handlers
try:
print(f"🔧 SocketIO Service: Registered event handlers: {list(socketio.server.handlers.keys())}")
print(f"🔧 SocketIO Service: Namespace handlers: {socketio.server.handlers.get('/', {})}")
except Exception as e:
print(f"🔧 SocketIO Service: Error accessing handlers: {e}")
print(f"🔧 SocketIO Service: SocketIO server: {socketio.server}")
print(f"🔧 SocketIO Service: SocketIO instance: {socketio}")
# Test manual event registration
@socketio.on("manual_test")
def handle_manual_test(data):
"""Manual test handler."""
print(f"🧪 MANUAL TEST EVENT: {data}")
print("🔧 SocketIO Service: Manual test handler registered")