2013-11-03 139 views
5

我正在開發顯示Redis實時數據(圖表等)的應用程序。更新後的數據非常快速(毫秒)。因此,儘可能經常地顯示更新是有意義的(只要人眼可以注意到它)。Real-Time with Node.js:WebSocket +服務器端輪詢與客戶端輪詢

技術堆棧:

  • 的Node.js作爲Web服務器
  • Redis的,作爲一個客戶端

現在我有保存數據

  • 的JavaScript/HTML(AngularJS)客戶端輪詢(每秒向Node.js服務器發送GET請求,查詢Redis的更新)。

    是否有做服務器端輪詢的好處,並通過WebSocket暴露更新?每個WebSocket連接將需要單獨的Node.js輪詢(setInterval),但由於客戶端查詢可能不同。但預計不會有超過100個WebSocket連接。

    這兩種方法之間有什麼優點/缺點?

  • 回答

    5

    如果我理解正確你的問題:你有少於100個用戶誰是要同時使用你的資源,你要找出什麼可以有更好的方式給他們更新:

    • 客戶通過超時請求(每秒1個請求更新)
    • 服務器跟蹤客戶端,每當有更新時,就會向他們發送更新。

    我認爲最好的解決方案取決於您擁有的數據以及用戶獲取此數據的重要性。

    我將與客戶端去,如果:

    • 人不關心,如果他們的數據是陳舊的一點點
    • 會有大約多於1個更新此1秒
    • 我在沒有時間去修改代碼

    我會去與服務器端,如果:

    • 重要的是擁有最新的數據並且用戶不能容忍延遲
    • 更新並不經常(如果我們每分鐘只更新一次,60個客戶端請求中只有1個會有用。而這裏的服務器只會發佈一個更新)

    一件好事是node.js已經有一個出色的socket.io庫用於此目的。

    +1

    感謝您的回覆。這是實時應用程序,並且總是有更新。更新後的數據非常快速(毫秒)。因此,儘可能經常地顯示更新是有意義的(只要人眼可以注意到它)。 – webdev

    +0

    這個答案應該被接受。 – Chev

    +0

    完成。謝謝你的偉大答案。 – webdev