JeuWeb - Crée ton jeu par navigateur
Routage des messages push vers les utilisateurs - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Routage des messages push vers les utilisateurs (/showthread.php?tid=7204)



Routage des messages push vers les utilisateurs - niahoo - 27-06-2014

Hello,

Je me demandais si certains d'entre vous on fini par mettre en place des services tels que pubnub, pusher ou bien directement du code basé sur socket.io/sockjs par exemple.

Ma question est la suivante : mettons que je veuille envoyer un MP à un autre joueur via push, comment fais-je pour savoir ou lancer mon push, c'est à dire identifier la connexion d'un joueur spécifique.

Voilà comment je ferais :

1. Lorsque le joueur arrive sur le jeu on détermine un identifiant utilisateur : son id d'user dans la table si on en a ou bien un id unique aléatoire si on joue sans inscription (entre autres moyens).

2. On détermine aussi un token non-prédictable qu'on associe côté serveur à cet identifiant utilisateur.

3. Quand un joueur charge la page du jeu, on lui communique son token et il écoute sur un channel portant le nom de son token.

4. Quand je veux envoyer un MP à un joueur, je clique sur sa tronche par exemple, une image avec un attribut data-user_id, du coup l'id est récupéré et un message est envoyé au serveur à destination de cet ID.

5. le serveur check l'id du joueur demandé, en récupère son token et envoie un message sur le channel portant le nom de ce token.


Voilà j'ai bon, c'est bien comme ça que vous faites ?

Y-a-t'il d'autres subtilités ?


RE: Routage des messages push vers les utilisateurs - Sephi-Chan - 27-06-2014

C'est effectivement la technique simple pour avoir des canaux secrets (plutôt que privés).
Ça fonctionne bien pour un joueur mais attention aux chats de discussions de groupe (par exemple le chat d'une alliance dans un jeu) : ne pas utiliser un "token de push" pour tout le groupe, puisqu'il suffirait qu'une taupe de l'autre camp le récupère pour s'inscrire à ce canal et espionner : dans ce cas il faut plutôt que l'application Web envoie chaque message à chaque joueur dudit groupe.

Pusher a un système de canaux privés qui va — a chaque connexion à ce canal — envoyer une requête à l'application Web avec les informations nécessaires pour que l'application soit en mesure de dire si oui ou non l'utilisateur qui a demandé l'ouverture du canal a le droit de le faire. Ça induit une petite latence à la connexion mais c'est sûr (et ça simplifie le problème cité plus haut).


RE: Routage des messages push vers les utilisateurs - niahoo - 27-06-2014

Oui je peux implémenter ça par dessus, ça marche bien avec du websocket. par contre pour du long polling (fallback) ça va faire la requête à chaque fois. Pas très grave.

Dans ce cas, l'utilisation du token non-prédictable est facultative non ? À moins de n'utiliser cette technique que pour les chans de groupe/guilde/etc.


RE: Routage des messages push vers les utilisateurs - Sephi-Chan - 27-06-2014

Pour tous les canaux publics, oui c'est facultatif.


RE: Routage des messages push vers les utilisateurs - niahoo - 27-06-2014

Nan, ce que je veux dire c'est que si pour écouter sur un canal il y a un système de vérification à la connexion, alors ça devient inutile que le canal s'appelle edc4f454f4dedcf54f54f65435345d33dc531f435e4d3f4fd, on peut l'appeller private-user-1 non ?


RE: Routage des messages push vers les utilisateurs - Sephi-Chan - 27-06-2014

J'avais mal compris. Effectivement. D'ailleurs dans Pusher pour qu'un canal soit privé, il suffit de préfixer son nom par private-.


RE: Routage des messages push vers les utilisateurs - niahoo - 27-06-2014

ok merci !