2010-07-04 3 views
0

Ok, la situation est la suivante.synchroniser l'heure du client avec l'heure du serveur, c'est-à-dire rendre l'application client indépendante du temps de l'ordinateur local

J'ai un serveur avec des services pour un jeu, une commande particulière du serveur envoie un horodatage pour le début du prochain tour de jeu. Pour que cela soit parfaitement synchronisé sur tous les clients connectés, j'ai également un webbservice qui renvoie un horodatage des serveurs en temps réel.

Ce que je sais: le temps écoulé entre la demande envoyée et la réponse reçue. Ce que je ne sais pas: où se situe la latence, sur le traitement du client ou le traitement du serveur ou les problèmes de bande passante.

Quelle est la meilleure pratique pour obtenir un résultat raisonnable ici. Je suppose que le GPS a dû résoudre ce problème d'une certaine manière mais j'ai été incapable de trouver un bon schéma.

Ce que je fais maintenant est d'ajouter la moitié de la latence de la requête à l'horodatage du serveur, mais ce n'est pas assez bon. Cela peut avoir à faire que le délai entre envoyer et recevoir peut atteindre 11 secondes.

Suggestions?

Répondre

1

Il existe de nombreuses solutions communes pour synchroniser le temps entre les machines, y compris l'implémentation correcte de PLL effectuée par NTPD avec RTP. Ceci vous est utile si vous pouvez changer l'heure locale de la machine. Si non, vous devriez peut-être faire plus ou moins ce que vous avez fait, mais laisser tomber les points de synchronisation où la latence est déraisonnable.

+0

merci pour la réponse! – Tobias

+0

merci pour les votes :) –

+0

Il s'est avéré que le webservice pourrait être forcé d'envoyer la réponse tout de suite et nous avons donc réussi à obtenir la latence dans les limites tolérant, phwew ... semblait plus facile de cette façon;) – Tobias

0

La meilleure pratique est généralement de ne pas synchroniser les temps absolus mais de travailler avec des temps relatifs à la place.

Questions connexes