Commit 89796d7e authored by Mat's avatar Mat

fonction privée refreshUsers() appelée par onMessage et onClose

parent b62058b4
......@@ -37,7 +37,10 @@ class WsCommand extends ContainerAwareCommand
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->write("Connexion au chat..\n");
$port = 8088;
$address = '0.0.0.0';
$output->write("\nConnexion du serveur Web Socket..\nlistening on $address:$port\n\n");
// méthode 1
$server = IoServer::factory(
......@@ -45,26 +48,22 @@ class WsCommand extends ContainerAwareCommand
new WsServer(
new ChatHub($this->getContainer())
)
), 8088, '0.0.0.0'
), $port, $address
);
/*
// méthode 2
$server = new App('0.0.0.0', 8088);
$server = new App($address, $port);
$server->route('/', new ChatHub($this->getContainer()));
*/
$server->run();
}
/*
*
* NOTES TOKEN JWT
* -> https://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/index.md#installation
* -> suis la procédure de création de clé
*
*/
}
\ No newline at end of file
......@@ -81,6 +81,7 @@ class ChatHub implements MessageComponentInterface
unset($this->clients[$key]);
}
}
$this->refreshUsers();
}
......@@ -119,41 +120,48 @@ class ChatHub implements MessageComponentInterface
switch ($dataPath) {
case '/register':
// importe le service qui permet de traiter le token
$tokenManager = $this->container->get('lexik_jwt_authentication.jwt_manager');
// payload, ce sont les données chiffrées à l'intérieur du token
$payload = $tokenManager->decode($token);
// récupère le username dans le payload du token
$username = $payload['username'];
// from c'est le client qui vient d'envoyer un message
// sauvegarde sa 'connection Interface'
$this->clients[$username] = $from;
// twig génère le fragment à retourner
$twig = $this->container->get('templating');
$partialView = $twig->render('@Socket/Chat/listUsers.html.twig', array(
'usernames' => array_keys($this->clients)
));
// importe le service qui permet de traiter le token
$tokenManager = $this->container->get('lexik_jwt_authentication.jwt_manager');
// payload, ce sont les données chiffrées à l'intérieur du token
$payload = $tokenManager->decode($token);
// récupère le username dans le payload du token
$username = $payload['username'];
// from c'est le client qui vient d'envoyer un message
// sauvegarde sa 'connection Interface'
$this->clients[$username] = $from;
$this->refreshUsers();
// formate la response
$response = json_encode(array(
'action' => 'refresh_users',
'view' => $partialView
));
// renvoie la réponse à tous les clients
foreach ($this->clients as $client)
{
$from->send($response);
}
break;
break;
}
}
/**
* @throws \Twig\Error\Error
*/
private function refreshUsers()
{
// twig génère le fragment à retourner
$twig = $this->container->get('templating');
$partialView = $twig->render('@Socket/Chat/listUsers.html.twig', array(
'usernames' => array_keys($this->clients)
));
// formate la response
$response = json_encode(array(
'action' => 'refresh_users',
'view' => $partialView
));
// renvoie la réponse à tous les clients
foreach ($this->clients as $client)
{
$client->send($response);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment