16-03-2014, 10:16 PM
Ton code PHP fait simplement une requête, envoie le résultat en Json et termine l'exécution. Normalement tu devrais avoir une erreur dans ta console javascript indiquant que la connexion à été terminée.
Du coup, l'objet EventSource essaie de se reconnecter et renvoie la requête. En gros ça revient à faire du long-polling, mais avec les limitations des SSE.
Ton script PHP ne doit pas se terminer, il doit, après avoir envoyé la réponse (via
Pour voir s'il y a du nouveau je dirais que le plus simple est de faire une somme de contrôle de ton tableau d'utilisateurs et de la comparer avec la somme de contrôle de la requête précédente. Si ça a changé, c'est que le résultat de la requête à changé. (Mais il te faut ajouter une clause
Pour le
Tu avouera que tout ça est un peu lourd. Si tu n'a que 100 joueurs ça restera très rapide. Mais à partir d'un certain nombre de joueurs (qui dépend de la qualité de ton hébergement) ça va commencer à être très lourd. Donc bon, j'espère que tu as compris où est ton erreur actuellement, fais des essais, amuse-toi, mais ensuite oublie PHP + SSE c'est trop moche.
Du coup, l'objet EventSource essaie de se reconnecter et renvoie la requête. En gros ça revient à faire du long-polling, mais avec les limitations des SSE.
Ton script PHP ne doit pas se terminer, il doit, après avoir envoyé la réponse (via
flush()
), faire un petit sleep(...)
puis recommencer, voir s'il y a du nouveau et si c'est le cas, flusher de nouvelles données.Pour voir s'il y a du nouveau je dirais que le plus simple est de faire une somme de contrôle de ton tableau d'utilisateurs et de la comparer avec la somme de contrôle de la requête précédente. Si ça a changé, c'est que le résultat de la requête à changé. (Mais il te faut ajouter une clause
ORDER BY
à ta requête pour en être sûr.)Pour le
sleep
il faudra trouver un nombre de secondes adéquat.Tu avouera que tout ça est un peu lourd. Si tu n'a que 100 joueurs ça restera très rapide. Mais à partir d'un certain nombre de joueurs (qui dépend de la qualité de ton hébergement) ça va commencer à être très lourd. Donc bon, j'espère que tu as compris où est ton erreur actuellement, fais des essais, amuse-toi, mais ensuite oublie PHP + SSE c'est trop moche.