Update files

This commit is contained in:
glpshchn 2025-12-15 04:19:59 +03:00
parent 0d6d8e0ff7
commit b496757cd5
1 changed files with 39 additions and 10 deletions

View File

@ -30,6 +30,14 @@ async def lifespan(app: FastAPI):
if settings.MINIO_ENABLED:
init_minio()
# Log Socket.IO status
if socketio_app:
print("✅ WebSocket (Socket.IO) доступен")
print(" 📡 Namespace /mod-chat доступен для чата модераторов")
print(" 🔌 WebSocket endpoint: /socket.io")
else:
print("⚠️ WebSocket (Socket.IO) недоступен - чат модераторов не будет работать")
print("=" * 60 + "\n")
yield
@ -79,19 +87,40 @@ async def root():
app.include_router(mod_app_router, prefix="/api/mod-app", tags=["moderation"])
app.include_router(moderation_auth_router, prefix="/api/moderation-auth", tags=["auth"])
# Socket.IO будет обернут в uvicorn.run() для правильной работы
# Здесь просто инициализируем для проверки
# Socket.IO будет обернут для правильной работы
# Создаем обернутое приложение для Socket.IO
# Socket.IO обрабатывает пути /socket.io, остальное идет в FastAPI
socketio_app = None
try:
socketio_app = get_socketio_app()
print("✅ WebSocket (Socket.IO) инициализирован")
print(" 📡 Namespace /mod-chat доступен для чата модераторов")
print(" 🔌 WebSocket endpoint: /socket.io")
print(" 💡 Подключение: wss://your-domain/socket.io с namespace='/mod-chat'")
except Exception as e:
print(f"⚠️ Ошибка инициализации WebSocket: {e}")
import traceback
traceback.print_exc()
print(" Чат модераторов будет недоступен")
# Ошибка инициализации Socket.IO - используем только FastAPI
socketio_app = None
# Создаем обернутое приложение для Socket.IO
# Socket.IO обрабатывает пути /socket.io, остальное идет в FastAPI
class SocketIOWrapper:
"""Wrapper to combine FastAPI and Socket.IO ASGI apps"""
def __init__(self, fastapi_app, socketio_app):
self.fastapi_app = fastapi_app
self.socketio_app = socketio_app
async def __call__(self, scope, receive, send):
path = scope.get("path", "")
# Если путь начинается с /socket.io, используем Socket.IO
if path.startswith("/socket.io"):
await self.socketio_app(scope, receive, send)
else:
# Иначе используем FastAPI
await self.fastapi_app(scope, receive, send)
# Создаем обернутое приложение (доступно для uvicorn)
# Это должно быть на уровне модуля, чтобы uvicorn мог импортировать
if socketio_app:
wrapped_app = SocketIOWrapper(app, socketio_app)
else:
# Если Socket.IO не инициализирован, используем только FastAPI
wrapped_app = app
if __name__ == "__main__":
print("\n" + "=" * 60)