Spaces:
Runtime error
Runtime error
"""FastAPI application factory.""" | |
from fastapi import FastAPI, WebSocket, WebSocketDisconnect | |
from fastapi.middleware.cors import CORSMiddleware | |
from .routes import v1_router | |
class ConnectionManager: | |
def __init__(self): | |
self.active_connections: List[WebSocket] = [] | |
async def connect(self, websocket: WebSocket): | |
await websocket.accept() | |
self.active_connections.append(websocket) | |
def disconnect(self, websocket: WebSocket): | |
self.active_connections.remove(websocket) | |
async def broadcast(self, message: str): | |
for connection in self.active_connections: | |
await connection.send_text(message) | |
manager = ConnectionManager() | |
def create_app() -> FastAPI: | |
"""Create and configure the FastAPI application.""" | |
app = FastAPI() | |
# Add CORS middleware | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Include routers | |
app.include_router(v1_router) | |
async def startup_event(): | |
"""Run startup events.""" | |
pass | |
async def shutdown_event(): | |
"""Run shutdown events.""" | |
pass | |
async def websocket_endpoint(websocket: WebSocket): | |
await manager.connect(websocket) | |
try: | |
while True: | |
data = await websocket.receive_text() | |
print(f"Received: {data}") | |
await manager.broadcast(f"Message from client: {data}") | |
except WebSocketDisconnect: | |
manager.disconnect(websocket) | |
await manager.broadcast("A client disconnected") | |
return app | |
# Create default app instance | |
app = create_app() | |