Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Node.js:WebSocket+;服务器端轮询与客户端轮询_Javascript_Node.js_Websocket_Redis_Real Time - Fatal编程技术网

Javascript 使用Node.js:WebSocket+;服务器端轮询与客户端轮询

Javascript 使用Node.js:WebSocket+;服务器端轮询与客户端轮询,javascript,node.js,websocket,redis,real-time,Javascript,Node.js,Websocket,Redis,Real Time,我正在开发一个显示Redis实时数据(图表等)的应用程序。更新的数据很快(毫秒)到达Redis。因此,尽可能频繁地显示更新是有意义的(只要人眼能注意到) 技术堆栈: Node.js作为web服务器 保存数据的Redis JavaScript/HTML(AngularJS)作为客户端 现在我有了客户端轮询(每秒向Node.js服务器获取请求,查询Redis的更新) 改为进行服务器端轮询并通过WebSocket公开更新是否有好处?每个WebSocket连接都需要单独的Node.js轮询(setI

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

技术堆栈:

  • Node.js作为web服务器
  • 保存数据的Redis
  • JavaScript/HTML(AngularJS)作为客户端
现在我有了客户端轮询(每秒向Node.js服务器获取请求,查询Redis的更新)

改为进行服务器端轮询并通过WebSocket公开更新是否有好处?每个WebSocket连接都需要单独的Node.js轮询(setInterval),因为客户端查询可能不同。但预计不会有超过100个WebSocket连接


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

如果我正确理解了您的问题:您将同时使用您的资源的用户不到100个,并且您希望找到更好的方法向他们提供更新:

  • 客户端通过超时请求请求更新(每秒1次)
  • 服务器跟踪客户机,每当有更新时,就会向客户机发出更新
我认为最好的解决方案取决于您拥有的数据以及用户获取这些数据的重要性

如果出现以下情况,我会选择客户端:

  • 人们不在乎他们的数据是否有点过时
  • 在这1秒内,大约会有1次以上的更新
  • 我没有时间修改代码
如果出现以下情况,我会选择服务器端:

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

一个好消息是node.js已经有了一个非常好的库用于此目的。

感谢您的回复。这是一个实时应用程序,总是有更新。更新的数据很快(毫秒)到达Redis。所以尽可能多地显示更新是有意义的(只要人眼能注意到)。完成。谢谢你的回答。