29-12-2011, 01:21 PM
(Modification du message : 29-12-2011, 01:22 PM par Sephi-Chan.)
La principale forme de parade, c'est simplement d'avoir un token (appelons-le le push_token) unique par utilisateur et de le transmettre au Javascript comme on l'a fait pour l'identifiant. Ainsi, au lieu d'envoyer les informations sur le canal
L'autre difficulté, c'est pour les canaux privés (genre le canal de discussion d'une guilde). Ici, l'astuce du token de guilde ne marche pas, car s'il y a une taupe, elle peut donner ce token. La solution est variable selon les outils utilisés. La technique universelle, c'est de ne pas push sur un canal de guilde, mais de push sur le canal de chaque membre de la guilde. Sur certains services, cette solution peu être assez coûteuse en nombre de push (quand il faut pousser par un appel HTTP, par exemple), alors que ça n'a pas d'impact sur un outil comme Juggernaut grâce à Redis. Il y a d'autres techniques plus élégantes selon les systèmes, par l'utilisation de middleware.
Quand j'aurais plus de temps, je rédigerai tout ça sur le Wiki.
users/1
(facile à deviner), on envoie sur users/1/acbd18
(difficile à deviner). Ainsi, le seul moyen d'écouter les messages d'un autre utilisateur, c'est de découvrir son token de push.
<script type="text/javascript">
window.currentUserId = <?php echo $current_user->getId(); ?>;
window.currentUserPushToken = <?php echo $current_user->getPushToken(); ?>;
</script>
L'autre difficulté, c'est pour les canaux privés (genre le canal de discussion d'une guilde). Ici, l'astuce du token de guilde ne marche pas, car s'il y a une taupe, elle peut donner ce token. La solution est variable selon les outils utilisés. La technique universelle, c'est de ne pas push sur un canal de guilde, mais de push sur le canal de chaque membre de la guilde. Sur certains services, cette solution peu être assez coûteuse en nombre de push (quand il faut pousser par un appel HTTP, par exemple), alors que ça n'a pas d'impact sur un outil comme Juggernaut grâce à Redis. Il y a d'autres techniques plus élégantes selon les systèmes, par l'utilisation de middleware.
Quand j'aurais plus de temps, je rédigerai tout ça sur le Wiki.