2015-09-10 2 views
0

J'ai un fil de nouvelles et je veux rafraîchir son contenu avec 15 nouveaux messages toutes les 5 minutes. Sur ma page html, j'ai une étiquette de paragraphe qui agit comme le compte à rebours. Lorsque la minuterie atteint 0, je veux mettre à jour le flux.Flux de nouvelles Qui met à jour avec un nouveau contenu sur un minuteur

Je sais que je pourrais utiliser 'setInterval (300000)' côté client pour demander de nouveaux messages toutes les 5 minutes. Cependant, j'ai besoin que la minuterie existe indépendamment du client afin que le flux soit rempli avec de nouvelles données en même temps pour chaque utilisateur. Est-ce que j'ai raison d'enrouler une requête de base de données dans une fonction 'setInterval (300000)' côté serveur, et d'une manière ou d'une autre d'envoyer les données renvoyées au client pour traitement? Si oui, quelle serait la meilleure approche pour envoyer ces données au client?

Poursuivant avec ceci, comment pourrais-je synchroniser le temporisateur dans mon html avec le compte à rebours actuel sur le serveur? Serait-il logique d'utiliser en quelque sorte socket.io pour garder une connexion ouverte et envoyer l'heure actuelle du serveur au client? Si oui, à quoi pourrait ressembler cette connexion? J'utilise 'Backbone.js' comme framework frontal, et 'node.js' avec 'express', et 'socket.io' comme back-end.

Je suis familier avec la synchronisation des vues avec les modèles sur le frontal. Ma question est plus sur comment peupler les modèles avec les données nécessaires pour compléter ma tâche.

Toute aide, ou la direction de l'endroit où je pourrais trouver de l'aide serait grandement appréciée! Merci!

Répondre

1

Impossible d'envoyer des données du serveur aux clients si les clients ne font pas de demande.

Vous devez trouver le moyen de permettre aux clients de faire la demande à la même heure (toutes les 5 minutes).

  1. Dans le code du serveur, définir le temps que vous voulez envoyer la demande (toutes les 5 minutes comme 10h15, 10h20, ...)
  2. Dans le client, lors de la connexion de l'utilisateur ou en ligne, envoyer la prochaine fois pour faire une demande au client . Il suffit d'utiliser setTimeout avec cette fois client prise du serveur, vous pouvez obtenir un nouveau message à partir du serveur très facile.