Class WebSocketMateZone

java.lang.Object
org.java_websocket.WebSocketAdapter
org.java_websocket.AbstractWebSocket
org.java_websocket.server.WebSocketServer
server.Protocol.webSocket.WebSocketMateZone
All Implemented Interfaces:
Runnable, org.java_websocket.WebSocketListener, IWebSocketMateZone

public class WebSocketMateZone extends org.java_websocket.server.WebSocketServer implements IWebSocketMateZone
Serveur WebSocket principal de l'application MateZone. Cette classe étend WebSocketServer et implémente IWebSocketMateZone pour gérer la communication temps réel avec les clients connectés. Elle orchestre les connexions, traite les messages entrants selon le protocole défini et gère l'association des clients aux canaux de chat. Le serveur suit l'architecture hexagonale en implémentant l'interface métier et en déléguant la logique business au ClientService.
Version:
V1
Author:
Prévost Donovan
  • Nested Class Summary

    Nested classes/interfaces inherited from class org.java_websocket.server.WebSocketServer

    org.java_websocket.server.WebSocketServer.WebSocketWorker
  • Field Summary

    Fields inherited from class org.java_websocket.server.WebSocketServer

    decoders

    Fields inherited from class org.java_websocket.AbstractWebSocket

    DEFAULT_READ_BUFFER_SIZE
  • Constructor Summary

    Constructors
    Constructor
    Description
    WebSocketMateZone(int port, ClientService clientService)
    Constructeur du serveur WebSocket MateZone.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    broadcast(int idChannel, ChatEventDTO eventRec)
    Diffuse un événement de chat à tous les clients connectés sur un canal donné.
    void
    delClientChannel(org.java_websocket.WebSocket client)
    Supprime l'association d'un client avec son canal de chat.
    void
    onClose(org.java_websocket.WebSocket client, int code, String reason, boolean remote)
    Méthode appelée lors de la fermeture d'une connexion WebSocket.
    void
    onError(org.java_websocket.WebSocket client, Exception ex)
    Méthode appelée en cas d'erreur sur une connexion WebSocket.
    void
    onMessage(org.java_websocket.WebSocket client, String message)
    Méthode appelée lors de la réception d'un message WebSocket.
    void
    onOpen(org.java_websocket.WebSocket client, org.java_websocket.handshake.ClientHandshake handshake)
    Méthode appelée lors de l'ouverture d'une nouvelle connexion WebSocket.
    void
    Méthode appelée au démarrage du serveur WebSocket.
    void
    setClientChannel(org.java_websocket.WebSocket client, int idChannel)
    Associe un client WebSocket à un canal de chat spécifique.

    Methods inherited from class org.java_websocket.server.WebSocketServer

    addConnection, allocateBuffers, broadcast, broadcast, broadcast, broadcast, broadcast, broadcast, createBuffer, getAddress, getConnections, getDraft, getLocalSocketAddress, getMaxPendingConnections, getPort, getRemoteSocketAddress, getWebSocketFactory, onCloseInitiated, onClosing, onConnect, onMessage, onWebsocketClose, onWebsocketCloseInitiated, onWebsocketClosing, onWebsocketError, onWebsocketMessage, onWebsocketMessage, onWebsocketOpen, onWriteDemand, queue, releaseBuffers, removeConnection, run, setDaemon, setMaxPendingConnections, setWebSocketFactory, start, stop, stop, stop

    Methods inherited from class org.java_websocket.AbstractWebSocket

    getConnectionLostTimeout, getReceiveBufferSize, isDaemon, isReuseAddr, isTcpNoDelay, setConnectionLostTimeout, setReceiveBufferSize, setReuseAddr, setTcpNoDelay, startConnectionLostTimer, stopConnectionLostTimer

    Methods inherited from class org.java_websocket.WebSocketAdapter

    onPreparePing, onWebsocketHandshakeReceivedAsClient, onWebsocketHandshakeReceivedAsServer, onWebsocketHandshakeSentAsClient, onWebsocketPing, onWebsocketPong

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • WebSocketMateZone

      public WebSocketMateZone(int port, ClientService clientService)
      Constructeur du serveur WebSocket MateZone. Initialise le serveur sur le port spécifié et configure le service client pour traiter la logique métier. Initialise également la map des canaux clients.
      Parameters:
      port - le port d'écoute du serveur WebSocket
      clientService - le service métier pour traiter les opérations client
  • Method Details

    • setClientChannel

      public void setClientChannel(org.java_websocket.WebSocket client, int idChannel)
      Associe un client WebSocket à un canal de chat spécifique. Permet de suivre dans quel canal se trouve chaque client connecté.
      Specified by:
      setClientChannel in interface IWebSocketMateZone
      Parameters:
      client - la connexion WebSocket du client
      idChannel - l'identifiant du canal de chat
    • delClientChannel

      public void delClientChannel(org.java_websocket.WebSocket client)
      Supprime l'association d'un client avec son canal de chat. Utilisé lors de la déconnexion d'un client.
      Parameters:
      client - la connexion WebSocket du client à supprimer
    • broadcast

      public void broadcast(int idChannel, ChatEventDTO eventRec)
      Diffuse un événement de chat à tous les clients connectés sur un canal donné. Parcourt tous les clients connectés et envoie le message uniquement à ceux présents dans le canal spécifié.
      Specified by:
      broadcast in interface IWebSocketMateZone
      Parameters:
      idChannel - l'identifiant du canal de diffusion
      eventRec - l'événement de chat à diffuser (contient le message et les métadonnées)
    • onOpen

      public void onOpen(org.java_websocket.WebSocket client, org.java_websocket.handshake.ClientHandshake handshake)
      Méthode appelée lors de l'ouverture d'une nouvelle connexion WebSocket. Ajoute automatiquement le client au canal par défaut (canal 1) et affiche un message de confirmation de connexion.
      Specified by:
      onOpen in class org.java_websocket.server.WebSocketServer
      Parameters:
      client - la nouvelle connexion WebSocket
      handshake - les informations de négociation WebSocket
    • onMessage

      public void onMessage(org.java_websocket.WebSocket client, String message)
      Méthode appelée lors de la réception d'un message WebSocket. Désérialise le message JSON en ChatEventDTO et dispatche le traitement vers le service client selon le type d'événement (LOGIN, SIGNUP, NEW_MESSAGE, NEW_CHANNEL).
      Specified by:
      onMessage in class org.java_websocket.server.WebSocketServer
      Parameters:
      client - la connexion WebSocket ayant envoyé le message
      message - le message JSON reçu
    • onClose

      public void onClose(org.java_websocket.WebSocket client, int code, String reason, boolean remote)
      Méthode appelée lors de la fermeture d'une connexion WebSocket. Supprime le client de la map des canaux pour libérer les ressources et affiche un message de déconnexion.
      Specified by:
      onClose in class org.java_websocket.server.WebSocketServer
      Parameters:
      client - la connexion WebSocket fermée
      code - le code de fermeture de la connexion
      reason - la raison de la fermeture
      remote - indique si la fermeture est initiée par le client distant
    • onError

      public void onError(org.java_websocket.WebSocket client, Exception ex)
      Méthode appelée en cas d'erreur sur une connexion WebSocket. Affiche le message d'erreur pour faciliter le debug.
      Specified by:
      onError in class org.java_websocket.server.WebSocketServer
      Parameters:
      client - la connexion WebSocket en erreur (peut être null pour les erreurs serveur)
      ex - l'exception rencontrée
    • onStart

      public void onStart()
      Méthode appelée au démarrage du serveur WebSocket. Affiche un message de confirmation indiquant que le serveur est opérationnel.
      Specified by:
      onStart in class org.java_websocket.server.WebSocketServer