Spaces:
Runtime error
Runtime error
File size: 2,376 Bytes
330b6e4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
"""
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 |