javascript - JS 根据用户设置发送通知

标签 javascript node.js notifications stocks stockquotes

我正在构建一个基本的股票观察应用程序 - 让我们将当前观察的股票称为N。当股票变动 X% 时,触发通知/事件。 X 是按每个用户定义的。

服务器保存股票的当前价格以及用户最后已知的价格(每个用户收到的最后警报)

构建这个的最佳方法是什么?我不想在任何价格变动时循环遍历每个用户来检查他们设置的移动百分比是否达到,因为这显然是一个巨大的性能问题。

我们将非常感谢用于进一步研究的资源和链接。

我正在用 Javascript(准确地说是 nodeJS)构建它,但我对构建它背后的概念更感兴趣,而不是直接的代码示例。

谢谢!

最佳答案

您可以为每只股票创建一个观察者列表,其中包含观察该股票的用户列表以及他们的通知触发价格。如果您按触发价格对列表进行排序,那么您可以轻松地从列表的一端遍历以收集现在应通知的用户的确切列表。为该用户发出通知后,您可以决定是为该用户设置新的触发价格,还是将其从列表中删除,因为他们的通知已发送。

此类方案具有以下优点:

  1. 找出在给定价格变动至新价格后应通知哪些用户既简单又快捷。
  2. 这与用户总数无关,因此可以扩展到大量用户。
  3. 对于特定股票,您只需与正在观看该特定股票的用户打交道,而不是与整个用户群打交道。
  4. 添加用户通知只是按顺序插入到列表中(对触发价格进行二分搜索并插入到列表中 - 已知的插入算法)。

为了使从系统中删除用户等操作更加高效,用户对象可能还保留该用户正在关注的证券列表(及其触发价格),这样您就可以转到每个证券并将该用户的关注从列表中删除,而无需搜索所有证券。因此,添加监视会将一个项目添加到用户对象列表中,并将用户和触发价格添加到特定于安全的列表中。

关于javascript - JS 根据用户设置发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664745/

相关文章:

javascript - 与 GWT 应用程序一起使用的好的 Javascript 图形库是什么?

javascript - 循环内的“page.evaluate()”(在 Puppeteer 中)返回相同的值

node.js - 用于生产的 Ember 构建花费了超过预期的时间

android - Xamarin - Oreo (API 26) Firebase Cloud Messaging 后台通知未显示在通知抽屉中

php - 在 Laravel/Eloquent 中对类似的通知进行分组

javascript - 在 AngularJS 中限制正则表达式输入的指令

javascript - Firefox 中的 Vue devtools 未检测到 Vue 3 应用程序

javascript - 如何使用 node.js 的 readline 模块进行两次连续输入?

ios - 我们如何通知用户更新其企业应用程序

javascript - Javascript 可以切换 frameborders 吗?