/** * 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); } }