使用自定义过滤器的实时数据的坚持方法

问题描述 投票:3回答:1

我一直在挠头,现在已经尝试了大约一个星期。所以我希望可以在这里找到我的帮助。

我正在制作一个向客户端提供实时数据的应用程序,我曾考虑过Server-Sent-Events,但是不允许每个用户的响应AFAIK。

WebSocket也是一种选择,但我对此并不确信,让我来勾画我在WS上所做的场景:

  1. 服务器每秒获取20条记录,并将它们推入数组中
  2. 此数组每秒发送到所有websocket连接,请参见下面的伪代码:
  3. let items = [ { ... some-data ... } ];
    
    io.on("connection", socket => {
      setInterval(() => {
        io.emit("all_items", items);
      }, 1000);
    });
    
  1. 用户可以在前端选择一些项目,Websocket会收到此每个连接
  2. 但是,我被定罪的方式不是好方法,而且效率极低。让我来勾画我想实现的目标

:的程序场景
  • 有一个拥有1.000条记录的数据库
  • 用户从(React)前端连接到后端,并通过大约20条提取的记录(不带过滤器)连接到主“流”,服务器每秒提取一次。 SELECT * FROM Items LIMIT 20
  • 这是复杂的部分:

  • 用户点击带有自定义过滤器的某些复选框(在前端),例如location = Shelf 2。现在,应该发生的事情是,无论过滤器是什么,websocket始终为该用户显示20条记录]

    我想过要为每个具有自定义选项的用户提供一个自定义查询,但是我认为这很糟糕,如果您有10.000个用户,则绝对会破坏服务器]

  • 我将如何进行这项工作?请,一切都会有所帮助,在此先感谢您。

我一直在挠头,现在已经尝试了大约一个星期。因此,我希望可以在这里找到帮助。.我正在制作一个向客户端提供实时数据的应用程序,我已经考虑过Server -...

javascript node.js express sockets real-time
1个回答
2
投票

我必须对您的应用进行一些猜测。让我在谈论服务器功能时尝试说明它,而不提及MySQL或任何其他数据库。

我猜

© www.soinside.com 2019 - 2024. All rights reserved.