38 lines
1013 B
Python
38 lines
1013 B
Python
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"}
|