Bonjour à tous,
J'ai comme projet le développement d'un jeu sur navigateur, et pour rendre la gestion du jeu plus dynamique, je pense y intégrer certains concepts AJAX séduisants.
Au départ je me disais que j'allais gérer le rafraîchissement par un timer, du style toutes les 3 secondes j'appelle une URL qui me renvoie soit rien, soit les données à mettre à jour pour le client.
Puis au fil de mes recherches, j'ai vu parler d'une technique qui consiste à faire ça un peu différemment : j'ouvre une URL, qui au lieu de ne rien renvoyer, boucle tant qu'il n'y a rien à renvoyer, jusqu'au timeout si besoin. S'il y a quelque chose à renvoyer, elle le renvoie instantanément. Et côté client, dès que le retour de l'URL se fait (timeout ou réponse cohérente), je rappelle immédiatement l'URL pour récupérer le paquet suivant.
Ce concept de rafraîchissement semble plus performant que le timer côté client, car il effectue moins de requêtes HTTP, et récupère la mise à jour dès qu'elle est disponible (et non pas après 3 secondes)
Pour illustrer ce concept, j'ai commencé à développer un chat, mais je me pose des questions de performance côté serveur. Sur le serveur j'utilise PHP et MySQL. Le script qui vérifie s'il n'y a rien à renvoyer fait en boucle une requête SQL, tant que celle-ci ne renvoie pas de résultat, et sort dès qu'il y en a. Mon souci est de trop solliciter le serveur.... Pour l'instant la seule solution à laquelle j'ai pensé pour ne pas trop l'agresser, c'est rajouter un sleep dans la boucle qui fait la requête SQL. Ca m'embête un peu, car du coup je retrouve le désavantage du timer...
Donc en gros, j'aurais besoin d'une bonne idée, d'un conseil, pour pouvoir tester si quelque chose a changé en base... Il faudrait que je puisse "monitorer" le changement d'état de quelque chose sur le serveur, quelque chose qui soit déclenché par une mise à jour en base. Si quelqu'un a une idée, je suis preneur
Merci
Partager