""" WebSocket initialization module. This module provides functions to initialize and configure the WebSocket communication layer with all required dependencies. """ import logging from flask_socketio import SocketIO import redis from .chat_websocket import create_chat_websocket_handler from .message_validator import create_message_validator from .connection_manager import create_connection_manager from .events import register_websocket_events from ..services.chat_agent import ChatAgent from ..services.session_manager import SessionManager logger = logging.getLogger(__name__) def initialize_websocket_handlers(socketio: SocketIO, chat_agent: ChatAgent, session_manager: SessionManager, redis_client: redis.Redis, connection_timeout: int = 300) -> None: """ Initialize WebSocket handlers and register events. Args: socketio: Flask-SocketIO instance chat_agent: Chat agent service session_manager: Session manager service redis_client: Redis client for connection management connection_timeout: Connection timeout in seconds """ try: # Create connection manager connection_manager = create_connection_manager(redis_client, connection_timeout) # Create WebSocket handler websocket_handler = create_chat_websocket_handler( chat_agent, session_manager, connection_manager ) # Register WebSocket events register_websocket_events(socketio, websocket_handler) logger.info("WebSocket handlers initialized successfully") except Exception as e: logger.error(f"Failed to initialize WebSocket handlers: {e}") raise def create_websocket_services(redis_client: redis.Redis, connection_timeout: int = 300): """ Create WebSocket service instances. Args: redis_client: Redis client instance connection_timeout: Connection timeout in seconds Returns: tuple: (connection_manager, message_validator) """ connection_manager = create_connection_manager(redis_client, connection_timeout) message_validator = create_message_validator() return connection_manager, message_validator