É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 SocketIO
Attributs :
Paramètre Type Description Valeur par défaut app
Instance de l'application Flask L'instance de votre application Flask, généralement créée avec `Flask(__name__)`. None
host
str Adresse IP pour écouter les connexions. Par défaut, l'application écoute sur `127.0.0.1`. '127.0.0.1'
port
int Le port sur lequel l'application écoute. Par défaut, c'est `5000`. 5000
Exemple 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_message
est 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 send
Attributs :
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, WebSocket
Exemple 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_endpoint
gè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}")
.