Vue d'ensemble

Flask-SocketIO 5.0, publie le 15 mars 2021, passe au protocole Socket.IO 5.x et ajoute le mode asynchrone natif.

Fonctionnalites principales

Protocole Socket.IO 5.x

Flask-SocketIO 5.0 adopte le protocole Socket.IO 5 qui ameliore la fiabilite des connexions, le support binaire et la gestion des reconnexions.

python
from flask import Flask
from flask_socketio import SocketIO, emit

app = Flask(__name__)
socketio = SocketIO(app, cors_allowed_origins='*')

@socketio.on('message')
def gerer_message(data):
    print(f'Message recu : {data}')
    emit('response', {'reponse': 'Message recu !'})

@socketio.on('connect')
def gerer_connexion():
    print('Client connecte')
    emit('bienvenue', {'message': 'Connexion etablie'})

# socketio.run(app, host='0.0.0.0', port=5000)

Mode asynchrone

Le mode async natif permet d'utiliser async/await dans les gestionnaires d'evenements, ameliorant les performances pour les connexions concurrentes.

python
from flask import Flask
from flask_socketio import SocketIO, emit

app = Flask(__name__)
socketio = SocketIO(app, async_mode='eventlet')

@socketio.on('traitement')
def traitement_long(data):
    """Traitement avec emission progressive."""
    import time
    for i in range(5):
        time.sleep(1)
        emit('progression', {'etape': i + 1, 'total': 5})
    emit('termine', {'resultat': 'OK'})

# Modes async supportes : eventlet, gevent, threading

Sources