2017-10-06 2 views
-1

J'ai une question concernant la relation entre le DOM et mon Backend. J'ai un site web fonctionnant avec node.js et express et maintenant je veux mettre en place une fonctionnalité "live counter".Comment obtenir constamment des informations du backend dans le noeud dom in?

Le compteur devrait être actualisé toutes les 10 secondes environ et montrer à l'utilisateur le «score» actuel. Le problème est que ce score est sauvegardé dans ma base de données Mongo et que je veux montrer la nouvelle information à l'utilisateur (sans charger une nouvelle page, ce serait ennuyeux).

Il me est pas un problème pour exécuter un script qui actulizes toutes les secondes, mais je soit dû:

1) Soit un script exécuté sur le côté client et récupérer des informations de mon DB comme ceci:

setInterval(function(){ 
    //get Information from Server (X) 
    //manipulate div in the DOM 

    }, 1000 
); 

Ou 2) Soit une course de script côté serveur et de manipuler en quelque sorte le DOM à partir de là

setInterval(function(){ 
    //get value from DB 
    //somehow access DOM and change the value there (X) 

    }, 1000 
); 

(le "(X)" marque la partie la plus délicate pour moi)

Je sais aussi qu'il n'est pas vraiment possible de manipuler le DOM à partir du noeud et pas une bonne idée d'accéder à ma base de données depuis le client. Mais je suis à court d'idées ici. Certains d'entre vous peuvent-ils m'expliquer comment ce problème pourrait être résolu?

Merci beaucoup, Paul

+0

Utilisez le socket https://socket.io/. –

+0

Socket.io est un excellent cas d'utilisation pour cela. Alternativement, si vous voulez utiliser les fonctions ajax de jquery, vous pouvez le faire, et mettre à jour les éléments HTML en conséquence, compte tenu de la réponse. –

+0

Je suis d'accord avec socket.io comme un bon choix, mais je vous recommande fortement de regarder dans firebase, c'est comme mongo + socket.io avec une API – Felipe

Répondre

-1

Vous pouvez utiliser socket.io pour ce type de problème où vous pouvez émettre les données de votre serveur sur l'intervalle de temps spécifique ou sur un événement spécifique. Et abonnez-vous cet événement pour obtenir ces données en temps réel.