实时与Node.js:WebSocket +服务器端轮询与客户端轮询

我正在开发显示来自Redis的实时数据(图表等)的应用程序。 更新的数据非常快(毫秒)。 因此,尽可能频繁地显示更新是有意义的(只要人眼可以注意到)。

技术堆栈:

  • Node.js作为一个Web服务器
  • Redis拥有这些数据
  • JavaScript / HTML(AngularJS)作为客户端

现在我有客户端轮询(GET请求到Node.js服务器每秒查询Redis的更新)。

是否有做服务器端轮询的好处,并通过WebSocket暴露更新? 每个WebSocket连接将需要单独的Node.js轮询(setInterval),尽pipe由于客户端查询可能不同。 但预计不会有超过100个WebSocket连接。

这两种方法之间有什么优点/缺点?

如果我正确地理解了你的问题:你有不到100个用户同时使用你的资源,你想知道什么是更好的方法来给他们更新:

  • 客户通过超时请求来请求更新(每秒1次)
  • 服务器跟踪客户端,每当有更新时,都会向他们发送更新。

我认为最好的解决scheme取决于您拥有的数据,以及用户获取这些数据的重要性。

如果出现以下情况,我会和客户端一起去

  • 人们不关心他们的数据是否有点陈旧
  • 在这1秒内将会有大约1次以上的更新
  • 我没有时间修改代码

我会去服务器端,如果:

  • 有最新的数据和用户不能容忍滞后是非常重要的
  • 更新并不经常(如果我们每分钟只更新一次,60个客户端请求中只有1个是有用的,而这里服务器只发布一个更新)

有一件好事就是node.js已经有了一个很好的socket.io库来达到这个目的。