Update files
This commit is contained in:
parent
0d6d8e0ff7
commit
b496757cd5
|
|
@ -30,6 +30,14 @@ async def lifespan(app: FastAPI):
|
||||||
if settings.MINIO_ENABLED:
|
if settings.MINIO_ENABLED:
|
||||||
init_minio()
|
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")
|
print("=" * 60 + "\n")
|
||||||
|
|
||||||
yield
|
yield
|
||||||
|
|
@ -79,19 +87,40 @@ async def root():
|
||||||
app.include_router(mod_app_router, prefix="/api/mod-app", tags=["moderation"])
|
app.include_router(mod_app_router, prefix="/api/mod-app", tags=["moderation"])
|
||||||
app.include_router(moderation_auth_router, prefix="/api/moderation-auth", tags=["auth"])
|
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:
|
try:
|
||||||
socketio_app = get_socketio_app()
|
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:
|
except Exception as e:
|
||||||
print(f"⚠️ Ошибка инициализации WebSocket: {e}")
|
# Ошибка инициализации Socket.IO - используем только FastAPI
|
||||||
import traceback
|
socketio_app = None
|
||||||
traceback.print_exc()
|
|
||||||
print(" Чат модераторов будет недоступен")
|
# Создаем обернутое приложение для 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__":
|
if __name__ == "__main__":
|
||||||
print("\n" + "=" * 60)
|
print("\n" + "=" * 60)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue