diff --git a/moderation/backend-py/websocket_server.py b/moderation/backend-py/websocket_server.py index ecd30be..d04c4c4 100644 --- a/moderation/backend-py/websocket_server.py +++ b/moderation/backend-py/websocket_server.py @@ -38,15 +38,19 @@ def broadcast_online(): sio.emit('online', online_list, namespace='/mod-chat') -# Обработчик для корневого namespace +# Обработчик для корневого namespace (требуется для Socket.IO handshake) # Socket.IO сначала подключается к корневому namespace для handshake, -# затем клиент может подключиться к нужному namespace +# затем клиент подключается к указанному namespace @sio.on('connect', namespace='/') async def on_connect_root(sid, environ): """Handle client connection to root namespace (Socket.IO handshake)""" - print(f"[WebSocket] 🔄 Client connected to ROOT namespace (handshake): {sid}") - logger.info(f"[WebSocket] Client connected to ROOT namespace (handshake): {sid}") - # Разрешаем подключение - клиент потом подключится к /mod-chat + print(f"[WebSocket] 🔄 Handshake to ROOT namespace: {sid}") + print(f"[WebSocket] Environ type: {type(environ)}") + if environ: + print(f"[WebSocket] Environ keys: {list(environ.keys()) if isinstance(environ, dict) else 'N/A'}") + logger.info(f"[WebSocket] Handshake to ROOT namespace: {sid}") + # Разрешаем подключение для handshake + # Возвращаем True, чтобы разрешить подключение return True # Namespace handlers for /mod-chat @@ -170,5 +174,6 @@ def get_socketio_app(): # Socket.IO ASGI app должен обернуть FastAPI app для правильной работы # Но мы делаем это в main.py через SocketIOWrapper # Здесь просто возвращаем ASGI app для Socket.IO + # socketio_path указывает путь, по которому Socket.IO будет слушать return socketio.ASGIApp(sio, socketio_path='/socket.io') diff --git a/moderation/frontend/src/App.jsx b/moderation/frontend/src/App.jsx index 1416b10..aa76d7f 100644 --- a/moderation/frontend/src/App.jsx +++ b/moderation/frontend/src/App.jsx @@ -665,7 +665,8 @@ export default function App() { reconnection: true, reconnectionDelay: 1000, reconnectionAttempts: 5, - timeout: 10000 + timeout: 10000, + forceNew: false }); socket.on('connect', () => {