2009-12-22 9 views
3

Nous développons un jeu social basé sur un navigateur, et il s'agit d'un jeu MMORPG. Nous utilisons html/javascript/css comme technologie frontend (en comparaison avec flash). Lorsque l'utilisateur chargera notre jeu pour la première fois, un tas de fichiers sera téléchargé (external js/css) et plusieurs appels ajax seront demandés. La page entière ne sera pas rechargée à moins que l'utilisateur n'actualise la page manuellement. Et nous créons un objet js pour stocker les données spécifiques à l'utilisateur, comme l'argent, le niveau et plus encore. Et il est susceptible de changer au cours des prochaines opérations de l'utilisateur. Nous devons donc synchroniser les données du backend. Un numéro spécial est les données de l'utilisateur peuvent également être mis à jour passivement (par d'autres utilisateurs), cela peut arriver dans un combat par d'autres utilisateurs. alors ma question est comment et quand synchroniser? Jusqu'à maintenant nous avons subi deux étapes, 1) chaque fois que l'utilisateur clique sur les onglets (pour afficher/masquer une div en html) ou des opérations possibles (comme combattre/acheter quelque chose), nous appelons la requête ajax pour obtenir les données de la base de données à chaque fois. 2) similaire à 1) mais nous ajoutons simplement un proxy pour indiquer si les données de l'utilisateur sont modifiées ou non pour réduire la requête de base de données inutile. L'appel ajax ira au proxy en premier.Synchroniser les données entre frontend et backend

pour 1), nous pouvons avoir 70% + inutiles appels ajax et db requêtes

pour 2), nous pouvons avoir 70% + inutile ajax appelle

Maintenant, nous utilisons l'approche de 2). Mais je ne pense pas que ce soit la meilleure solution, car nous avons encore 70% d'appels ajax inutiles. alors existe-t-il une meilleure solution à ce cas d'utilisation?


explications

appel ajax inutile: depuis l'intervalle entre 2 appels ajax, les données de l'utilisateur ne peut pas changer du tout.

Répondre

2

Bonne question, je pense que la meilleure solution sera de mettre en œuvre serveur push. L'idée est simple, comme vous avez la connexion entre le client et le serveur, le serveur sait quand les données sont modifiées, donc il peut informer le client (dans votre cas le html/javascript/css) de tout changement. Cela devrait éliminer les interrogations inutiles (vos appels ajax).

Maintenant, vous pouvez vérifier, ou tout simplement la recherche google pour d'autres Ajax Poussez solutions: http://www.icefaces.org/main/ajax-java/ajaxpush.iface

Cela dépendra aussi de la technologie que vous utilisez pour la sever d'application, dans le pire des cas , vous devez implémenter votre propre Ajax Push.

0

Je suis d'accord avec Kel ici Ajax-Push AKA Comet est la meilleure solution.
Je sais déjà par expérience que Persevere est une bonne solution et cela fonctionne le mieux avec le Dojo toolkit.
Je peux également suggérer que vous devriez essayer Wt si la performance est critique car elle permet de coder des sites Web en C++. Les deux sont d'excellents choix en fonction de vos besoins.

Questions connexes