Skip to content

Filtrage des broadcasts WebSocket par type de client #11

@CCoupel

Description

@CCoupel

Description

Actuellement, tous les messages WebSocket sont envoyés à tous les clients connectés (admin, TV, VJoueur) sans distinction. Cette amélioration ajoute un filtrage intelligent pour n'envoyer que les messages pertinents à chaque type de client.

📄 Spécification complète : backlog/TODO/websocket-broadcast-filtre.md

Problème actuel

Message Admin TV VJoueur Actuellement
UPDATE Tous ✅
QUESTIONS Tous ❌
CLIENTS Tous ❌
BACKGROUND_CHANGE Tous ❌
ENROLLMENT_UPDATE Tous ❌

Les clients reçoivent des messages inutiles → bande passante gaspillée.

Phase 1 - Backend

  • Ajouter ClientType dans internal/server/websocket.go
  • Modifier WSClient pour inclure le type
  • Parser SET_CLIENT_TYPE pour définir le type
  • Créer broadcastFiltered(msg, targets...) dans main.go
  • Remplacer les appels broadcast() par broadcastFiltered() avec les bons filtres

Phase 2 - Frontend

  • Ajouter ClientPlayer pour les VJoueurs
  • Envoyer SET_CLIENT_TYPE depuis VPlayerPage

Phase 3 - Tests

  • Test unitaire : broadcast sans filtre → tous reçoivent
  • Test unitaire : broadcast avec filtre → seuls les ciblés reçoivent
  • Test E2E : vérifier qu'un VJoueur ne reçoit pas QUESTIONS

Fichiers concernés

Fichier Modification
internal/server/websocket.go Ajouter ClientType, modifier WSClient
cmd/server/main.go broadcastFiltered(), mise à jour des appels
web/src/pages/VPlayerPage.jsx Envoyer SET_CLIENT_TYPE: "player"

Avantages

  • Réduction du trafic WebSocket inutile
  • Code plus explicite (on sait qui reçoit quoi)
  • Préparation pour restrictions de sécurité
  • Pas de refactoring majeur (amélioration incrémentale)

Metadata

Metadata

Assignees

No one assigned

    Labels

    TODOPlanifié, pas encore démarrébackendServeur GobacklogItem du backlog BuzzMasterenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions