2016-07-03 166 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