Skip to content

implémentation complète RA1-RA5 (QoS, timeouts, reconnexion, monitoring)

BADSI MASSI requested to merge feature/network-tasks into develop

📌 Description

Implémentation complète et optimisation du lot Réseau (Tâches RA1 à RA5) et correction de dysfonctionnements Frontend critiques.

Détails des implémentations :

  • RA1 & RA3 (Timeouts & Reconnexions) : Mise en place d'un système de timeout de 10 secondes lors d'une déconnexion socket. Si le joueur ne revient pas (F5 ou reconnexion), un auto-FOLD est déclenché. La reconnexion annule correctement ce chronomètre.
  • RA2 & RA5 (Monitoring & Latence) : Ajout d'un système de logs pour traquer le nombre de connexions simultanées en temps réel et chronométrer le traitement des événements de jeu (QoS très performante mesurée à < 5ms).
  • RA4 (Optimisation Bot) : Ajout du suivi de la Qualité de Service (QoS) des bots pour certifier des temps de réponse < 500ms (en pratique ~1ms).
  • Frontend - Fix Boucle Infinie : Résolution d'un bug majeur dans WaitingRoom.tsx qui spammait l'API en boucle à cause de références instables dans un useEffect.
  • Frontend - Fix Spam Bot & Blocage : Résolution d'un bug dans Game.tsx où l'API Bot était appelée en double à cause du StrictMode. Ajout de la gestion des refus serveurs (ACTION_ERROR, INVALID_RAISE) pour afficher un toast et débloquer l'interface utilisateur.

🔗 Lien vers l'issue

Type de changement

  • Feature (nouvelle fonctionnalité)
  • Fix (correction de bug)
  • Refactor (pas de changement fonctionnel)
  • Docs (documentation)
  • Chore (maintenance technique)
  • Hotfix (urgence)

🧪 Comment tester

  1. Démarrer les bases de données et le projet (npm run start).
  2. Tester le monitoring : Ouvrir plusieurs onglets et vérifier le terminal du serveur ([Monitoring Réseau] 🌐 Nouvelle connexion... Total simultanées: X).
  3. Tester le Timeout (RA3) : Lancer une partie, fermer violemment l'onglet. Vérifier le terminal : un compte à rebours de 10s se lance, puis déclenche un Auto-FOLD.
  4. Tester la reconnexion (RA1) : Actualiser la page (F5) en pleine partie. Le terminal doit indiquer que le joueur est de retour et le compte à rebours est annulé, le jeu continue de façon fluide.
  5. Tester la QoS Bot (RA4) : Jouer contre un Bot, vérifier le terminal : [Monitoring QoS] 🤖 Décision bot calculée en Xms (doit être très inférieur à 500ms et ne s'afficher qu'une seule fois par tour).

Checklist

  • Tests unitaires ajoutés/mis à jour
  • Documentation mise à jour
  • Pipeline CI vert
  • Relu par un reviewer

👥 Reviewers requis

  • Backend (@azra, @soheil)
  • Frontend (@mohamed, @yigit)
  • Sécurité (@linda, @massi)
  • BDD (@elhadj)

🚨 Impact potentiel

  • Breaking change
  • Performance
  • Sécurité
Edited by BADSI MASSI

Merge request reports