← Back to Tutorials
29. WebSockets
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from typing import List
app = FastAPI()
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()
@app.websocket("/ws/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: str):
await manager.connect(websocket)
try:
while True:
data = await websocket.receive_text()
await manager.broadcast(f"Client {client_id}: {data}")
except WebSocketDisconnect:
manager.disconnect(websocket)
await manager.broadcast(f"Client {client_id} left")
Client Example (HTML/JS)
<script>
const ws = new WebSocket("ws://localhost:8000/ws/user1");
ws.onmessage = (event) => console.log(event.data);
ws.send("Hello everyone!");
</script>
✏️ Exercise: Build a simple chat server using WebSockets. Create an HTML client that connects, sends messages, and displays incoming messages in real time.
← Previous Back to Index Next: Event Handlers →