我研究过类似的问题,试图搜索我想要做的事情,但我没有发现任何具体的问题。
我想做的是:在我工作的地方,我们使用HMI/SCADA系统来显示标签、机器状态和其他标准的SCADA功能。最近,我想出了如何从SCADA系统发送HTTP请求,并测试了如何将标记值和其他类似的数据发送到我创建的一个Express服务器,其中的值大约是每秒POSTed (用于监视或报告;设想每秒钟都有一个温度计报告温度)。即使我们使用的系统被认为是“前沿”,用户界面是块和缺乏,特别是相比于现代web应用程序。我的想法是将数据从SCADA系统发送到一个POST端点,然后由Node.js / Express应用程序处理,并报告给一个内部网站。这样,我就可以使用图形和图表(来自D3或chart.io)和预构建的UI组件库,比如Bootstrap或TailwindCSS。
我的问题是:我使用SCADA应用程序发送带有数据有效负载的HTTP请求。我可以验证Express服务器是否接收到请求,并记录消息。但是,我不知道如何将POSTed数据发送到单个(目前)的HTML页面。我有一个带有progress bar引导组件的简单HTML页面,我正试图从SCADA应用程序中控制它。如何将前端组件(例如,图形或引导带进度条)绑定起来,以便在到达后端点时进行更新?我可以使用Javascript fetch(),但是SCADA系统不一定要在设定的时间间隔内发布,所以我如何只在不进行轮询的情况下对UI进行更改(例如,经常从前端使用fetch(),我认为这是个坏主意)。
此外,如果你能预见到其他的问题,我想做什么,我会非常感谢任何反馈。对于我们的公司来说,这是一个未知的领域,所以如果它成功的话,我们可能会以这种方式构建报表和其他用户内容,我想创建一个坚实的基础架构,以支持每秒的许多请求,同时对UI进行即时更改。
发布于 2020-05-19 18:46:54
这是相当标准的。您只需将POSTed的数据保存到快速服务器内存中的数据结构(变量)中的服务器。然后你就可以把它拿出来。如果您只关心最新的数据,那么它可能会对数据库造成过度的影响。如果随着时间的推移需要数据,您可能应该考虑将其保存在数据库中。
关于民意测验,它并没有它的声誉那么糟糕。您已经在一个已知的间隔(1s)获得数据,因此从前端以类似的间隔或分数(5s)轮询数据是合理的。如果您在前端有有限的带宽,您可以在服务器上实现一些更改逻辑,这样如果数据是相同的,它就不会发送数据,但我不知道您的数据是否可能在20多岁时保持不变。如果不是,可能不值得付出努力。如果你认为这是值得的努力,看看npm包快递和朋友。
https://softwareengineering.stackexchange.com/questions/410353
复制相似问题