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