Je ne suis pas un expert en php, donc je ne peux pas dire si vous le faites déjà, mais le code côté serveur devrait accepter un paramètre qui lui indique à partir de quelle date charger les messages.
Vous devriez alors avoir une variable dans le javascript du côté client indiquant la date/heure du dernier message récupéré. Lorsque la page se charge, cette variable doit être nulle.
Ensuite, l'appel à showNewStories
enverrait la variable avec la dernière date au serveur. Sur le serveur, si la variable est transmise à la page php, celle-ci renverra les résultats suivants uniquement les messages où la date et l'heure affichées sont plus grand que la date et l'heure affichées.
Ensuite, lorsque vous recevez la réponse du serveur, vous pouvez ajouter les messages à votre timeline. Lorsque vous ajoutez le dernier, vous stockez que comme étant la date et l'heure qui seront transmises au serveur la prochaine fois que l'utilisateur se connectera au serveur. showNewStories
s'appelle.
Il y a une faille dans cette logique car si la résolution de la date et de l'heure sur votre serveur n'est pas assez fine pour gérer la fréquence du nombre de messages qu'il reçoit, vous pourriez rencontrer un problème lorsqu'un message est publié à l'heure suivante x
vous récupérez la liste à tout moment x
et ensuite un autre poste est accepté au moment x
. La fois suivante showNewStories
fait un appel au serveur, vous manquerez le deuxième message effectué à l'instant x
.
Pour que ce système soit à l'épreuve des balles, il faut modifier la logique du serveur pour inclure tous les messages dont l'heure de publication est égale à l'heure de la date. Vous devez également renvoyer un identifiant unique pour chaque message transmis au client.
Ensuite, du côté client, lorsque la fonction de rappel de la commande getJSON
est appelé, vous devez inclure tous les éléments pour lesquels la date et l'heure du message sont supérieures à l'heure soumise au serveur. ou les dates et heures sont égales, et l'identifiant du message retourné par le serveur n'est pas déjà dans la liste (je recommande d'inclure l'identifiant du message dans la liste en tant que attribut de données ).