From 876ca8221c5249e778054442a50714882e9409d3 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Fri, 6 Feb 2026 09:57:45 +0800 Subject: [PATCH] Put web client together --- app/main.py | 20 +++++++++++++++++++- app/web_client.py | 28 ---------------------------- 2 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 app/web_client.py diff --git a/app/main.py b/app/main.py index 0cf543f..fa77621 100644 --- a/app/main.py +++ b/app/main.py @@ -4,10 +4,11 @@ import asyncio import json import time import uuid +from pathlib import Path from typing import Dict, Any, Optional, List from fastapi import FastAPI, WebSocket, WebSocketDisconnect, HTTPException from fastapi.middleware.cors import CORSMiddleware -from fastapi.responses import JSONResponse +from fastapi.responses import JSONResponse, FileResponse from loguru import logger # Try to import aiortc (optional for WebRTC functionality) @@ -64,6 +65,7 @@ async def heartbeat_and_timeout_task( # Initialize FastAPI app = FastAPI(title="Python Active-Call", version="0.1.0") +_WEB_CLIENT_PATH = Path(__file__).resolve().parent.parent / "examples" / "web_client.html" # Configure CORS app.add_middleware( @@ -99,6 +101,22 @@ async def health_check(): return {"status": "healthy", "sessions": len(active_sessions)} +@app.get("/") +async def web_client_root(): + """Serve the web client.""" + if not _WEB_CLIENT_PATH.exists(): + raise HTTPException(status_code=404, detail="Web client not found") + return FileResponse(_WEB_CLIENT_PATH) + + +@app.get("/client") +async def web_client_alias(): + """Alias for the web client.""" + if not _WEB_CLIENT_PATH.exists(): + raise HTTPException(status_code=404, detail="Web client not found") + return FileResponse(_WEB_CLIENT_PATH) + + @app.get("/iceservers") diff --git a/app/web_client.py b/app/web_client.py deleted file mode 100644 index 5994da3..0000000 --- a/app/web_client.py +++ /dev/null @@ -1,28 +0,0 @@ -"""Static web client server (port 8100 by default).""" - -from pathlib import Path -from fastapi import FastAPI, HTTPException -from fastapi.responses import FileResponse -import uvicorn - -WEB_CLIENT_PATH = Path(__file__).resolve().parent.parent / "examples" / "web_client.html" - -app = FastAPI(title="Python Active-Call Web Client", version="0.1.0") - - -@app.get("/") -async def web_client(): - """Serve the web client.""" - if not WEB_CLIENT_PATH.exists(): - raise HTTPException(status_code=404, detail="Web client not found") - return FileResponse(WEB_CLIENT_PATH) - - -if __name__ == "__main__": - uvicorn.run( - "app.web_client:app", - host="0.0.0.0", - port=8100, - reload=True, - log_level="info", - )