2017-09-21 5 views
1

Je construis un jeu dans lequel deux utilisateurs s'affrontent contre la montre. Chaque joueur a 60 secondes pour répondre à autant de questions que possible.La gestion du temps côté client est-elle susceptible d'être cohérente par rapport à la gestion du temps côté serveur?

J'ai deux approches possibles pour Chronométrage:

  1. Envoyez le temps restant du serveur au client chaque seconde - en utilisant Socket.io, les ressources inutiles du serveur
  2. la poignée compte à rebours du côté client, mais envoie un signal du serveur pour terminer le jeu après 60 secondes - possible que le compte à rebours pour chaque joueur ne soit pas synchronisé

Ma question est la suivante: un compte à rebours côté client serait-il raisonnablement cohérent entre les deux clients?

S'il est implémenté côté client, il utilisera setInterval() en JavaScript.

Répondre

1

Votre état réel doit être conservé sur le serveur pendant que les clients doivent essayer de synchroniser (mettre à jour leur état) en fonction de l'état de réponse du serveur. Fondamentalement, si l'utilisateur est en retard, il perd toujours son temps, plutôt que de bloquer le temps. Cela empêche également les triches côté client en changeant les valeurs.

Ainsi, à chaque tick, vos clients doivent savoir quel est le temps réel du serveur.