Établir une connexion WebSocket avec Flask et FastAPI
Fonctions :
-
Flask - Connexion WebSocket avec Flask-SocketIO
Permet d'établir une connexion WebSocket avec le serveur en utilisant l'extension Flask-SocketIO.
Importation :
from flask_socketio import SocketIOAttributs :
Paramètre Type Description Valeur par défaut appInstance de l'application Flask L'instance de votre application Flask, généralement créée avec `Flask(__name__)`. Nonehoststr Adresse IP pour écouter les connexions. Par défaut, l'application écoute sur `127.0.0.1`. '127.0.0.1'portint Le port sur lequel l'application écoute. Par défaut, c'est `5000`. 5000Exemple de code :
from flask import Flask from flask_socketio import SocketIO app = Flask(__name__) socketio = SocketIO(app) @socketio.on('message') def handle_message(message): print(f'Reçu: {message}') send(f'Reçu votre message: {message}') if __name__ == '__main__': socketio.run(app, host='0.0.0.0', port=5000)Explication du code :
- Ce code crée une application Flask avec SocketIO pour gérer les connexions WebSocket.
- La fonction
@socketio.on('message')écoute les messages envoyés au serveur. Lorsqu'un message est reçu, la fonctionhandle_messageest appelée et renvoie une réponse au client avecsend(). socketio.run()démarre le serveur, qui écoute sur toutes les interfaces réseau (0.0.0.0) et sur le port 5000.
-
Flask - Envoi et Réception de Messages
Décore une fonction pour écouter un événement spécifique sur la connexion WebSocket, comme un message entrant.
Importation :
from flask_socketio import sendAttributs :
message: Le message reçu du client.Exemple de code :
@socketio.on('message') def handle_message(message): print(f'Reçu: {message}') send(f'Reçu votre message: {message}')Explication du code :
- Cette fonction écoute les messages envoyés par le client via la connexion WebSocket.
- Lorsqu'un message est reçu, il est affiché dans le terminal grâce à
print(f'Reçu: {message}'). - Ensuite, une réponse est envoyée au client en utilisant la fonction
send(f'Reçu votre message: {message}').
-
FastAPI - Connexion WebSocket avec FastAPI
Permet d'établir une connexion WebSocket avec FastAPI de manière asynchrone.
Importation :
from fastapi import FastAPI, WebSocketExemple de code :
from fastapi import FastAPI, WebSocket import uvicorn app = FastAPI() @app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept() while True: data = await websocket.receive_text() print(f"Message reçu : {data}") await websocket.send_text(f"Reçu votre message : {data}") if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=5000)Explication du code :
- Ce code crée une application FastAPI avec un endpoint WebSocket sur
/ws. - La fonction
websocket_endpointgère la connexion WebSocket et accepte les connexions avecawait websocket.accept(). - Ensuite, dans une boucle infinie (
while True), il attend les messages du client avecawait websocket.receive_text()et renvoie une réponse avecawait websocket.send_text(). - Le serveur est démarré avec
uvicorn.run(), écoutant sur toutes les interfaces réseau et sur le port 5000.
- Ce code crée une application FastAPI avec un endpoint WebSocket sur
-
FastAPI - Envoi et Réception de Messages
Permet de recevoir un message texte du client via WebSocket.
Attributs :
data: Message reçu du client.Exemple de code :
data = await websocket.receive_text() print(f"Message reçu : {data}")Explication du code :
- Cette ligne permet de recevoir un message texte envoyé par le client via WebSocket.
- Le message reçu est stocké dans la variable
data, puis il est affiché à l'écran avecprint(f"Message reçu : {data}").