/**
  * Message JSON reçu par un client
  */
 public function onMessage(ConnectionInterface $client, $json)
 {
     //Création d'un message à partir du JSON
     $message = SocketMessage::fromJson($json);
     if ($message === false) {
         $this->logger->ln("Nouveau message mal formate : '{$json}'", -1);
         return;
     }
     $this->logger->ln("Nouveau message : '{$message->getId()}'", 2);
     switch ($message->getId()) {
         //Demande de mise à jour des topics
         case 'updateTopicsAndPushInfos':
             if ($this->isConnectionFromServer($client)) {
                 $this->delegateTopicsUpdate();
             }
             break;
             //Nouvelles données des topics disponibles
         //Nouvelles données des topics disponibles
         case 'topicsUpdate':
             if ($this->isConnectionFromServer($client)) {
                 $this->pushTopicsUpdate($message->getData());
             }
             break;
             //Un client suit un nouveau topic
         //Un client suit un nouveau topic
         case 'startFollowingTopic':
             $this->clientStartFollowingTopic($client, $message->getData());
             break;
             //Le lien avec le serveur de mise à jour des topics est effectué
         //Le lien avec le serveur de mise à jour des topics est effectué
         case 'linkUpdateServer':
             if ($this->isConnectionFromServer($client)) {
                 $this->linkUpdateServer($client);
             }
             break;
             //Indique au serveur que la connexion vient du client de stats
         //Indique au serveur que la connexion vient du client de stats
         case 'IAmTheStatsClient':
             if ($this->isConnectionFromServer($client)) {
                 $this->statsClient = $client;
                 $this->logger->ln("Stats client connecté...", 2);
             }
             break;
             //Demande d'infos sur les connectés
         //Demande d'infos sur les connectés
         case 'getClientInfos':
             //Seul le client de stats peut obtenir ces infos
             if ($this->statsClient === $client) {
                 $this->sendClientInfos($client);
             }
             break;
             //Simple ping
         //Simple ping
         case 'ping':
             $this->logger->ln("pong: " . $message->getData());
             break;
     }
     $this->logger->ln('--', 2);
 }
 public function onMessage(ConnectionInterface $connection, $json)
 {
     //On autorise seulement les connexions depuis le serveur
     if ($this->isConnectionFromServer($connection)) {
         //Création d'un message à partir du JSON
         $message = SocketMessage::fromJson($json);
         if ($message === false) {
             $this->logger->ln("Nouveau message mal formate : '{$json}'", -1);
             return;
         }
         $this->logger->ln("Nouveau message : '{$message->getId()}'", 2);
         switch ($message->getId()) {
             case 'getTopicUpdates':
                 $this->getTopicUpdates($message->getData());
                 break;
             case 'ping':
                 $this->logger->ln("pong: " . $message->getData());
                 break;
         }
         $this->logger->ln('--', 2);
     }
 }