2016-07-03 169 views
0

有什么办法刷新一个socket.io事件后的Node.js页面?刷新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) 

    }); 

有没有可能一旦'messageDynamic'更新后,node.js页面会更新为?

任何帮助,将不胜感激

+0

强制使用JS在客户端刷新网页。 – Nonemoticoner

+0

如果您发送带有必需数据的事件来更改DOM,则不需要刷新页面以进行更新。 –

+0

谢谢您的帮助,但您能否详细说明一下? – Doapper

回答

0

当你拥有了它,当你去/在浏览器中你得到的纯文本页面请求服务器一次,然后就不再侦听来自服务器的任何事件。为了动态地更新它,你将需要发送回一个完整的HTML页面socket.io客户端代码来听吧:

在服务器上,你会怎么做:

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

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

在客户端你会有一个相应的

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

为你正在尝试做一个更完整的例子见http://socket.io/get-started/chat/

+0

谢谢,但在“//做东西到页面”的位置,它在客户端,我怎么能修改服务器主页? – Doapper

+0

如果您需要更改服务器上的messageDynamic,那么在客户端上执行socket.emit(“UPDATE”,“new message”)会改变它。但是,客户不会刷新,除非他们也在听一个事件。 –

+0

对不起,我不是很清楚,我希望一旦messageDynamic在服务器端更新(我的初始代码就是这种情况),“response.end('status is:'+ messageDynamic)”被更新或执行再次。 – Doapper