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, 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.