Hoy vamos a aprender cómo podemos generar un websocket con FastAPI de forma rápida y sencilla.

Paso 1: Configuración del Entorno, si ya tienes FastAPI instalado, puedes saltar estos pasos.
Asegúrate de tener Python instalado en tu sistema. Luego, instala FastAPI y Uvicorn utilizando pip:
pip install fastapi uvicorn
Paso 2: Crear un Proyecto FastAPI
Crea un nuevo directorio para tu proyecto y dentro de él, crea un archivo llamado main.py.
mkdir fastapi_websocket cd fastapi_websocket touch main.py
Paso 3: Configuración del Servidor FastAPI con WebSocket
Abre el archivo main.py en tu editor de texto favorito e implementa el siguiente código:
from fastapi import FastAPI, WebSocket
app = FastAPI()
class ConnectionManager:
def __init__(self):
self.connections = {}
async def connect(self, websocket: WebSocket, client_id: int):
await websocket.accept()
self.connections[client_id] = websocket
def disconnect(self, client_id: int):
del self.connections[client_id]
async def send_message(self, message: str, client_id: int):
await self.connections[client_id].send_text(message)
manager = ConnectionManager()
@app.websocket("/ws/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: int):
await manager.connect(websocket, client_id)
try:
while True:
data = await websocket.receive_text()
await manager.send_message(f"Mensaje recibido: {data}", client_id)
except Exception as e:
print(f"Error: {e}")
finally:
manager.disconnect(client_id)
Este código establece un WebSocket en FastAPI con un endpoint /ws/{client_id}. La clase ConnectionManager se encarga de gestionar las conexiones y enviar mensajes a los clientes.
Paso 4: Ejecutar el Servidor FastAPI
Abre tu terminal y ejecuta el siguiente comando para iniciar el servidor FastAPI:
uvicorn main:app --reload
Esto iniciará el servidor en http://127.0.0.1:8000.
Paso 5: Probar el WebSocket con FastAPI en un dominio
Puedes usar esta web si tu servidor está online: https://piehost.com/websocket-tester
Indica la url de tu servidor webshocket: wss://tudominio.com/ws/1
Y recibirás lo siguiente:


Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.