Spaces:
Runtime error
Runtime error
File size: 3,037 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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | """
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") |