Spaces:
Runtime error
Runtime error
| """ | |
| 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 |