Bonnes pratiques en NodeJs

jeu tour par tour

a marqué ce sujet comme résolu.

Bonjour à tous :)

Je développe un jeu en ligne tour par tour et je sèche un peu

Premièrement j’ai choisi une auth avec un middleware JWT, je pense que ce n’est pas la meilleure pratique mais plus tard si je veux sortir le jeux de manière plus développé j’aurais déjà mon API REST prête.

J’utilise beaucoup de requête ajax mais je me demande comment gérer cet "effet" tour par tour. comment attribuer un temps de parole à chacun de mes clients. Je vois 2 possibilités les requêtes ajax en pending ou socket.io mais dans ce cas comment sécuriser la chose ? Il faudrait que je puisse envoyer mon token à chaque dialogue ? Comme vous le voyez je suis un peu perdu ?

Il est difficile de trouver de la doc à ce sujet je pense que ça peut en aider plus d’un.

PS : j’utilise NodeJS Express et EJS

Bonne journée

+0 -0

Bonjour Ne0ratek,

J’ai eu la même problématique que toi y’a 2 ans de ça. Les requêtes AJAX en pending peuvent être exécutées par Socket.io (mode polling). Tu peux le forcer mais sinon ça bascule automatiquement si le navigateur ne prend pas en charge les sockets.

Pour ce qui est de l’authentification, j’avoue avoir créé mon propre système mais je suis sûr que JWT peut tout à fait être efficace pour initier une connexion sécurisé. Il te suffit de conserver un registre de connexions côté serveur pour vérifier que l’utilisateur du Socket s’est bien authentifié. Puis si tu veux t’en assurer un peu plus, tu peux également demander une courte preuve (l’ID de l’utilisateur par exemple). Enfin pour penser un peu plus loin, tu peux également prévoir un cookie de reconnexion (à forger côté serveur) dans le cas où l’utilisateur ouvre plusieurs onglets, perd la reconnexion ou souhaite simplement maintenir sa connexion plusieurs jours (tu peux enregistrer une durée de conservation).

En ce qui concerne les requêtes synchrones, le plus simple reste encore de générer un ID unique au moment de l’émission du message (le module 'uniqid’), le serveur répond avec cet ID et à la réception le client appelle la promesse concernée. Pour mon projet, j’ai surchargé la fonction 'on' et 'emit' afin de prendre en charge cette gestion automatiquement.

En espérant t’avoir apporté des idées d’implémentations. :) je laisse le soin à d’autres de compléter, peut-être en proposant des modules.

Bonjour merci pour ta réponse, oui JWT c’est pas mal ça me permet de sortir un token sécurisé avec des petites infos de l’user comme son ID, je stock ensuite ce token Dans un cookie. Puis je l’envoi à chaque requête.

Dans le fichier HTML du jeu j’ai mis socket.io et j’ai trouvé socket io JWT pour le back qui me permet avant de connecter un user de vérifier son token. Si il est ok je met son socket id dans une liste puis comme ça je peux faire tous les appels nécessaires.

Pour l’instant c’est fonctionnel je suis en train de faire en sorte de gérer le tour de chaque joueur. Si ça intéresse quelqu’un je pourrais expliquer ma façon de faire qui au final je pense n’est pas trop mal 🙂

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte