监控系统如何实现数据的实时?

一个设备监控系统,要显示在线数量、离线数量、总数等,报警信息,故障信息等。

如何实现都是实时数据?

页面第一次加载都是从后端请求数据,展现出来。

其他的根据 websocket 来实现数量变化,报警信息的提示。

展现的数据要缓存还是每次变化都从后端请求?

缓存的话,是websocket 可能有断的时候,重新连接的时候数据可能都变化了怎么办?

每次都从后端请求的话,数据变化频率很高的话怎么办?

没想明白,请指点迷津🙏

针对您提出的问题,建议如下解决方案:

在页面第一次加载时,从后端请求数据,并将数据缓存到前端,这样可以避免每次都从后端请求数据带来的性能开销。建议在缓存数据时加上过期时间,避免数据长时间不更新导致展示的数据与实际数据不符。

对于在线数量、离线数量、总数等实时数据,建议使用 WebSocket 技术来实现。当后端数据发生变化时,后端主动推送数据到前端,前端接收到数据后更新页面上相关的数据。在这里需要注意的是,由于 WebSocket 连接可能存在断开和重连的情况,因此需要在前端考虑断开和重连时的处理逻辑。一种常用的方式是,前端应当记录并重发未成功发送的消息,当 WebSocket 重新连接成功时,将这些消息重新发送到后端以确保不丢失数据。

对于报警信息、故障信息等实时数据,也建议使用 WebSocket 来实现。当后端数据发生变化时,后端主动推送数据到前端,并在前端展示相关的提示信息。同样地,当 WebSocket 连接断开和重连时,前端也应当记录并重发未成功发送的消息。

综上所述,在实现设备监控系统时,可以采用页面首次加载缓存数据并使用 WebSocket 技术实时更新数据的方式,这样既能保证性能,又能够实现数据的实时展示。同时,在考虑 WebSocket 连接断开和重连时需要特别关注数据丢失和延迟问题,确保系统能够稳定运行。