2013-11-03 141 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