Système du Chatbox
Cette section détaille le composant responsable de la gestion des messages de chat entre les joueurs.
Relations avec le côté Client
Côté client, plusieurs composants interagissent avec ce service:
ChatService
(client) communique avecChatService
(serveur) via Socket.IOChatboxComponent
(client) affiche les messages et permet d'en envoyerLogService
(client) gère les entrées de journal de jeu qui peuvent apparaître dans le même composant
Flux de données
Le flux de données pour les messages de chat suit ce parcours:
- Un joueur envoie un message via
ChatboxComponent
- Le message est transmis au serveur via Socket.IO
ChatService
(serveur) traite le message et le stocke- Le message est diffusé à tous les joueurs dans la même partie
ChatService
(client) reçoit le message et met à jour l'interface
ChatService (chat.service.ts)
Service qui gère le stockage, la distribution et la récupération des messages de chat entre les joueurs d'une même partie.
Propriétés importantes
private chatHistory: Map<string, ChatMessage[]>
- Stocke l'historique des messages par code de partie
Méthodes
handleSocket(socket: Socket): void
- Description: Configure les gestionnaires d'événements socket liés au chat.
- Paramètres:
socket
- La connexion socket à configurer. - Importance: Élevée - Point d'entrée pour les événements de chat.
- Détails: Configure les événements 'SendMessage' et 'GetChatHistory'.
private handleNewMessage(message: ChatMessage, socket: Socket): void
- Description: Traite un nouveau message envoyé par un joueur.
- Paramètres:
message
- Le message envoyésocket
- La connexion socket du joueur
- Importance: Très élevée - Cœur du système de chat.
- Détails:
- Vérifie la présence du code de partie
- Marque le message comme externe pour les autres joueurs
- Initialise l'historique pour la partie si nécessaire
- Ajoute le message à l'historique
- Envoie le message aux autres joueurs dans la même salle
- Confirme la réception au joueur émetteur
private sendChatHistory(gameCode: string, socket: Socket): void
- Description: Envoie l'historique de chat d'une partie à un joueur.
- Paramètres:
gameCode
- Code de la partiesocket
- La connexion socket du joueur
- Importance: Élevée - Chargement initial de l'historique.
- Détails:
- Initialise l'historique si nécessaire
- Envoie l'historique complet au joueur demandeur
Interface ChatMessage
Structure qui représente un message de chat dans le système.
Propriétés
content: string
- Contenu du messagetime: string
- Horodatage du message (format heure locale)type: string
- Type de message ('external' ou 'user')author: string
- Nom du joueur émetteurgameCode?: string
- Code de la partie associée