2013-04-07 26 views
16

我對node.js非常陌生,但實際上只有一件簡單的事情,我試圖通過學習語言來實現。node.js - 如何進行簡單的實時頁面更新?

我想創建一個網頁,其中由特定「div」中的代碼可以在當前正在查看該頁面的用戶中隨時熱切地發送。 (即div包含一些文本,但隨後一個圖像將替換它)。 理想情況下,交換將由網頁管理員通過單擊按鈕手動執行,或者在服務器上啓動一些代碼或其他代碼。網頁的常規觀看者無法做到這一點 - 他們只能看到頁面上的實時更改。

現實生活中的例子:

直播因特網廣播是停播,因此「格」包含「停播」的文字。 廣播直播時會出現熱點代碼,網頁瀏覽者現在可以在「div」中看到html5廣播播放器。

爲node.js新手做這件事最簡單的方法是什麼?

非常感謝:)

回答

15

在Socket.IO http://socket.io/#how-to-use

看看當服務器決定播出的變化使用:

io.sockets.emit('update-msg', { data: 'this is the data'});

在客戶端第一次連接插座。 io,然後等待「update-msg」事件並更新你的dom:

var socket = io.connect('http://localhost'); 
socket.on('update-msg', function (msg) { 
    console.log(msg); 
    $('#mydiv').html(msg.data) 
}); 
+1

這是做到這一點的基本方法,但我的回答會引導您完成所有步驟以實現更復雜的方法 – 2015-09-21 02:03:04

4

我創建了一個使用RequireJS和Node.js進行更新(熱重載)前端代碼的系統/方法。我確定它與React和Backbone一起工作。你可以在這裏讀到它:

https://medium.com/@the1mills/hot-reloading-with-react-requirejs-7b2aa6cb06e1

參與這樣的基本步驟自己:

  1. gulp.js觀察家監聽文件系統變化gulpfile
  2. socket.io服務器發送一個消息到所有瀏覽器客戶端 與文件的路徑發生了變化
  3. 客戶端刪除表示該文件/模塊的緩存,並重新要求 它(使用AJAX將其從服務器文件系統中拉出來)
  4. 前端應用程序被配置/設計爲重新評估所有引用 到它希望熱重載的模塊,在這種情況下,只有JS 視圖,模板和CSS是可用於熱重載 - 路由器, 控制器,數據存儲(骨幹集合和模型)不是 配置尚未。我懷疑所有文件都可能被重新加載爲 ,唯一的例外是數據存儲。