from pathlib import Path from fastapi import FastAPI from fastapi.responses import FileResponse from fastapi.staticfiles import StaticFiles from app.websocket.chat import router as chat_router from app.websocket.manager import manager BASE_DIR = Path(__file__).resolve().parent STATIC_DIR = BASE_DIR / "static" app = FastAPI(title="Simple WebSocket Chatroom") # Registers the WebSocket endpoint: # ws://localhost:8000/ws/{room_id}/{client_id} app.include_router(chat_router) # Serves CSS, JavaScript, font files, and the main HTML page from app/static. app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") @app.get("/") async def home(): """Serve the chatroom GUI.""" return FileResponse(STATIC_DIR / "index.html") @app.get("/api/rooms") async def rooms(): """Return active rooms and users for simple debugging during the demo.""" return manager.rooms_overview() @app.get("/health") async def health(): return {"status": "ok", "app": "Simple WebSocket Chatroom"}