Un grand chat où n'importe qui peut être n'importe qui n'est pas une vraie application. Dans la leçon 47 du didacticiel complet FastAPI (débutant → Déploiement), nous construisons des salles de discussion – une salle par cours – et l'authentification sur WebSockets, étape par étape, dans un nouveau petit projet. Un RoomManager ligne par ligne : un dict de salles, rejoindre avec setdefault, quitter (les salles vides disparaissent), les membres et une diffusion qui atteint UNE seule salle. Ensuite, le problème d'authentification : un navigateur WebSocket ne peut pas envoyer d'en-tête Authorization – donc le jeton va dans la chaîne de requête (?token=…), et nous le comparons avec un cookie et un jeton de premier message. Une dépendance WebSocket valide le JWT AVANT d'accepter et déclenche WebSocketException (1008) – un vrai client voit HTTP 403, le TestClient voit le code 1008 et la raison. Salles uniquement pour les utilisateurs inscrits (authentification vs autorisation), une connexion qui se ferme lorsque le jeton expire (asyncio.wait_for avec un délai d'attente), un nettoyage final et un enseignant qui annonce dans une salle avec une requête HTTP normale. Deux démos contre un vrai serveur uvicorn et 11 tests – y compris comment prouver qu'un message n'a PAS atteint une salle. 💻 Code pour cette vidéo : https://github.com/nileshborate/fastapi/tree/main/47-websockets-rooms 📂 Code complet du cours : https://github.com/nileshborate/fastapi ▶️ Playlist complète : https://www.youtube.com/playlist?list=PLBjgbZvHwQmg 🌐 Site Web : https://www.nileshtechnology.in ⏱️ CHAPITRES 0:00 Intro 0:05 Réponse aux devoirs (Vidéo 46) : messages privés + pas de deux Ashas 1:54 D'une salle de classe à de vraies salles 2:39 Le plan du jour 3:13 Où obtenir le code (GitHub) 3:49 Le projet : les utilisateurs en mémoire 5:03 Le RoomManager : diffusion dans UNE salle 6:32 Auth sur WebSockets : pas d'en-tête d'autorisation 7:45 La dépendance ws_session (avant d'accepter) 9:38 Le point de terminaison de la salle : utilisateurs inscrits uniquement 10:50 Fermeture de la connexion lorsque le token expire 12:26 enfin : quitter la salle dans tous les cas 13:03 Annonces des membres et des enseignants via HTTP 13:59 Démo d'authentification : 403, 101 et jeton expiré 15:10 Démo des salles : les messages restent dans leur salle 16:26 Tests : authentification sur WebSockets 17:51 Tests : salles (prouvant qu'un message n'est PAS arrivé) 18:53 Avant la production 19:37 3 erreurs courantes 20:17 Questions d'entretien 21:25 Récapitulatif, devoirs et suite 📝 DEVOIRS 1. Historique : un nouveau membre reçoit les 20 derniers messages de la salle juste après son adhésion (deque(maxlen=20) par salle) 2. DELETE /rooms/{room}/members/{username} (enseignant uniquement) ferme toutes les connexions de cet utilisateur dans la salle avec le code 1008 et la raison "supprimé par l'enseignant" 3. Tests pour les deux La réponse est dans la vidéo suivante ! 🎯 QUESTIONS D'ENTRETIEN DANS CETTE VIDÉO • Comment authentifier un WebSocket dans FastAPI ? • Comment créez-vous des salons de discussion ? • Que se passe-t-il lorsque le JWT expire lors d'un WebSocket ouvert ? ⏭️ Vidéo suivante : Async Deep Dive – def vs async def, la boucle d'événements, le threadpool, le blocage des appels et run_in_threadpool 👍 Likez, abonnez-vous à Nilesh Technology et appuyez sur la cloche pour la prochaine leçon ! #FastAPI #Python #WebSockets #JWT #RealTime #FastAPITutorial #BackendDevelopment #PythonTutorial #NileshTechnology
Les informations fournies ne constituent pas des conseils commerciaux. kdj.com n’assume aucune responsabilité pour les investissements effectués sur la base des informations fournies dans cet article. Les crypto-monnaies sont très volatiles et il est fortement recommandé d’investir avec prudence après une recherche approfondie!
Si vous pensez que le contenu utilisé sur ce site Web porte atteinte à vos droits d’auteur, veuillez nous contacter immédiatement (info@kdj.com) et nous le supprimerons dans les plus brefs délais.