2016-07-03 1 views
0

Est-il possible d'actualiser une page Node.js après un événement socket.io?Actualiser la page Node.js

var messageDynamic = "Initial status"; 

app.get("/", function(request, response) { 
    response.setHeader('Content-Type', 'text/plain'); 
    response.end('The status is : ' + messageDynamic); 
}); 

io.on('connection', function(socket) { 

    socket.on('UPDATE', function(message) { 
     messageDynamic = message; 

     // here I want to refresh the Node.js page (in order to update the message) 

    }); 

Serait-il possible qu'une fois que 'messageDynamic' est mis à jour, la page node.js est mise à jour?

Toute aide serait appréciée

+0

Forcer le rafraîchissement de la page Web côté client avec l'utilisation de JS. – Nonemoticoner

+0

Vous n'avez pas besoin d'actualiser la page pour les mises à jour si vous émettez un événement avec les données nécessaires pour modifier le DOM. –

+0

Merci pour votre aide, mais pourriez-vous élaborer plus s'il vous plaît? – Doapper

Répondre

0

Comme vous l'avez la page de texte brut que vous obtenez lorsque vous allez à / dans votre navigateur demande au serveur une fois et ne sera plus écouter les événements du serveur. Afin de mettre à jour dynamiquement vous devez renvoyer une page html complète avec socket.io code client pour l'écouter:

Sur le serveur que vous feriez:

socket.on('UPDATE', function(message) { 
     messageDynamic = message; 

     // Send event to every socket.io client 
     io.emit('message', message); 
    }); 

Sur le client vous le feriez ont un correspondant

var socket = io(); 
socket.on('message', function(message){ 
    // Do stuff to the page 
}) 

Voir http://socket.io/get-started/chat/ pour un exemple plus complet de ce que vous essayez de faire.

+0

Merci, mais à la position "//Faire les choses à la page", c'est du coté client, comment est-ce que je pourrais modifier la page principale du serveur? – Doapper

+0

Si vous devez changer 'messageDynamic' sur le serveur, alors faire' socket.emit ("UPDATE", "nouveau message") 'sur un client le changera. Mais, le client ne se rafraîchira pas à moins d'être à l'écoute d'un événement. –

+0

Désolé je n'étais pas très clair, je veux qu'une fois que messageDynamic est mis à jour côté serveur (ce qui est le cas avec mon code initial), le "response.end ('L'état est:' + messageDynamic)" est mis à jour ou exécuté encore. – Doapper