scratch_chat / chat_agent /websocket /websocket_init.py
WebashalarForML's picture
Upload 178 files
330b6e4 verified
"""
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