# WebSockets { #websockets } Vous pouvez utiliser API WebSockets avec **FastAPI**. ## Installer `websockets` { #install-websockets } Vous devez créer un [environnement virtuel](../virtual-environments.md){.internal-link target=_blank}, l'activer, et installer `websockets` (une bibliothèque Python qui facilite l'utilisation du protocole « WebSocket ») :
Vous pouvez saisir des messages dans le champ de saisie et les envoyer :
Et votre application **FastAPI** avec WebSockets vous répondra :
Vous pouvez envoyer (et recevoir) de nombreux messages :
Et tous utiliseront la même connexion WebSocket.
## Utiliser `Depends` et autres { #using-depends-and-others }
Dans les endpoints WebSocket, vous pouvez importer depuis `fastapi` et utiliser :
* `Depends`
* `Security`
* `Cookie`
* `Header`
* `Path`
* `Query`
Ils fonctionnent de la même manière que pour les autres endpoints/*chemins d'accès* FastAPI :
{* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
/// info
Comme il s'agit d'un WebSocket, il n'est pas vraiment logique de lever une `HTTPException`, nous levons plutôt une `WebSocketException`.
Vous pouvez utiliser un code de fermeture parmi les codes valides définis dans la spécification.
///
### Essayez les WebSockets avec des dépendances { #try-the-websockets-with-dependencies }
Si votre fichier s'appelle `main.py`, exécutez votre application avec :
## Gérer les déconnexions et plusieurs clients { #handling-disconnections-and-multiple-clients }
Lorsqu'une connexion WebSocket est fermée, l'instruction `await websocket.receive_text()` lèvera une exception `WebSocketDisconnect`, que vous pouvez ensuite intercepter et gérer comme dans cet exemple.
{* ../../docs_src/websockets_/tutorial003_py310.py hl[79:81] *}
Pour l'essayer :
* Ouvrez l'application dans plusieurs onglets du navigateur.
* Écrivez des messages depuis ceux-ci.
* Puis fermez l'un des onglets.
Cela lèvera l'exception `WebSocketDisconnect`, et tous les autres clients recevront un message comme :
```
Client #1596980209979 left the chat
```
/// tip | Astuce
L'application ci-dessus est un exemple minimal et simple pour montrer comment gérer et diffuser des messages à plusieurs connexions WebSocket.
Mais gardez à l'esprit que, comme tout est géré en mémoire, dans une seule liste, cela ne fonctionnera que tant que le processus s'exécute et uniquement avec un seul processus.
Si vous avez besoin de quelque chose de facile à intégrer avec FastAPI mais plus robuste, pris en charge par Redis, PostgreSQL ou autres, consultez encode/broadcaster.
///
## Plus d'informations { #more-info }
Pour en savoir plus sur les options, consultez la documentation de Starlette concernant :
* La classe `WebSocket`.
* Gestion des WebSocket basée sur des classes.