WebashalarForML's picture
Upload 178 files
330b6e4 verified
"""
WebSocket event registration and handlers.
This module registers all WebSocket events with Flask-SocketIO and provides
the main entry point for WebSocket functionality.
"""
import logging
from flask_socketio import SocketIO
from .chat_websocket import ChatWebSocketHandler
logger = logging.getLogger(__name__)
def register_websocket_events(socketio: SocketIO, websocket_handler: ChatWebSocketHandler) -> None:
"""
Register all WebSocket events with Flask-SocketIO.
Args:
socketio: Flask-SocketIO instance
websocket_handler: WebSocket handler instance
"""
@socketio.on('connect')
def handle_connect(auth=None):
"""Handle WebSocket connection."""
logger.debug("WebSocket connect event received")
return websocket_handler.handle_connect(auth)
@socketio.on('disconnect')
def handle_disconnect():
"""Handle WebSocket disconnection."""
logger.debug("WebSocket disconnect event received")
websocket_handler.handle_disconnect()
@socketio.on('message')
def handle_message(data):
"""Handle chat message."""
logger.debug("WebSocket message event received")
websocket_handler.handle_message(data)
@socketio.on('language_switch')
def handle_language_switch(data):
"""Handle language switch request."""
logger.debug("WebSocket language_switch event received")
websocket_handler.handle_language_switch(data)
@socketio.on('typing_start')
def handle_typing_start(data):
"""Handle typing indicator start."""
logger.debug("WebSocket typing_start event received")
websocket_handler.handle_typing_start(data)
@socketio.on('typing_stop')
def handle_typing_stop(data):
"""Handle typing indicator stop."""
logger.debug("WebSocket typing_stop event received")
websocket_handler.handle_typing_stop(data)
@socketio.on('ping')
def handle_ping(data):
"""Handle ping for connection health check."""
logger.debug("WebSocket ping event received")
websocket_handler.handle_ping(data)
@socketio.on('get_session_info')
def handle_get_session_info(data):
"""Handle session info request."""
logger.debug("WebSocket get_session_info event received")
websocket_handler.handle_get_session_info(data)
# Error handlers
@socketio.on_error_default
def default_error_handler(e):
"""Handle WebSocket errors."""
logger.error(f"WebSocket error: {e}")
return {'error': 'Internal server error', 'code': 'WEBSOCKET_ERROR'}
@socketio.on_error()
def error_handler(e):
"""Handle general WebSocket errors."""
logger.error(f"WebSocket general error: {e}")
return {'error': 'Connection error', 'code': 'CONNECTION_ERROR'}
logger.info("WebSocket events registered successfully")