Crear un websocket con FastAPI

Tiempo de lectura: 2 minutos

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:

Deja un comentario