partie_gateway=new PartieGateway(); $this->arraySocketGroup=array(); $this->socketsFromQueue=array(); } public function Queuing($socket,string $request){ global $playerNumberPerGame; // Ajoute la connection à un tableau de connection des joueurs en attente $socketsFromQueue[]=$socket; // si le nombre de joueur par partie nécessaire est égal au nombre de connection encore dans la file d'attente // alors envoie à l'utilisateur de lancer la partie et ajoute l'ensemble de connection à un tableau de groupe de sockets avec comme paire clés valeurs // l'identifiant de la partie et l'ensemble de connections sinon envoie à tout les utilisateurs en file d'attente qu'il faut rafraichir la page de la file d'attente if(count($socketsFromQueue)==$playerNumberPerGame) { $response="launchGame"; $idPartie=$this->partie_gateway->findPartieInQueue(); $arraySocketGroup[$idPartie]= $socketsFromQueue; $arraySocketGroup[$this->partie_gateway->findPartieInQueue()]=$socketsFromQueue; $socketsFromQueue=array(); } else { $response="refreshQueue"; } foreach($socketsFromQueue as $sock) { socket_write($sock,$response,strlen($response)) or die("N'a pas pu écrire à la socket\n"); } } public function quitQueue(Socket $client,String $request){ // supprime le socket de la liste des sockets en attente $socketsFromQueue=array_diff($this->socketsFromQueue, array($client)); $response="quitQueue"; // envoie à tous les utilisateurs en attente de rafraichir la page foreach($socketsFromQueue as $socket) { socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n"); } } public function quitGame(Socket $client,String $request){ // supprime la socket de la liste des sockets en attente $this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client)); $response="quitGame"; // envoie à tous les utilisateurs en attente de rafraichir la page foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket) { socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n"); } } public function refreshDashBoard(Socket $client,String $request){ $response="refreshDashBoard"; // envoie à tous les utilisateurs en attente de rafraichir la page foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket) { socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n"); } } public function finishGame(Socket $client,String $request){ // supprime la socket de la liste des sockets en attente $this->arraySocketGroup=array_diff($this->arraySocketGroup, array($client)); $response="finishGame"; // envoie à tous les utilisateurs en attente de rafraichir la page foreach($this->arraySocketGroup[explode(" ",$request)[1]] as $socket) { socket_write($socket, $response, strlen($response)) or die("N'a pas pu envoyer la réponse au client\n"); } } }