首页 新闻 会员 周边 捐助

数据实时读取显示问题

0
悬赏园豆:20 [已解决问题] 解决于 2020-05-12 14:38

数据实时读取, 这里 我使用的是WebSocket ,虽然最后解决了问题,但是心里一直在担忧
因为在这里进行数据读取的时候,用了个死循环
昨天在群聊的时候, 有大佬叫我可以使用 signaIR(但是恐怕这里也需要定时去读取数据, 也会用到死循环一直去获取数据吧).
后面有大佬说,直接把这个功能封装成job( 这样的话, 还不是用了个死循环....)

想问一下,各位大佬们,这个地方的实现方式?(主要就是 感觉自己对死循环不放心... 然后又不知道其他的解决方案)
或者说我这里是还没有理解 数据实时读取显示的真谛

永远跟党走i的主页 永远跟党走i | 小虾三级 | 园豆:1542
提问于:2020-05-12 08:56

WebSocket 死循环是咋用的?

。淑女范erり 4年前

@。淑女范erり: 死循环去读数据库....

Cgrain 4年前

@。淑女范erり: 然后把数据返回前台...

Cgrain 4年前

@Cgrain: 和前台部分应该没啥问题,死循环读数据库不太合适。。。插入数据库的模块,不能和读数据库的模块有个交互吗。最好是让这两个模块有个通知机制,死循环有点浪费资源。。

。淑女范erり 4年前

@。淑女范erり: 其实按理来说,这个地方最好这样,数据插入数据库的时候也顺便把数据推送出去, 当这里 以前 是 用ajax 定时去数据库请求的,经常造成页面卡顿,然后资源占用过高,现在在一步步优化,然后现在的优化方案是转换为 使用WebSocket 去后台循环请求+推送的 ,现在 我也没什么太好的办法,所以才采取的这个方法

Cgrain 4年前

@。淑女范erり: 而且,我这里把它封装成服务了....

Cgrain 4年前

@Cgrain: 至少比以前ajax定时轮询好多了 😄 不过你说的这个地方最好这样,数据插入数据库的时候也顺便把数据推送出去 实现起来有问题吗,这种方式是最合理的。

。淑女范erり 4年前

@。淑女范erり: 数据插入这一块的模块比较单一,都是获取数据,然后插入数据库的, 我这样的话,不是破坏了原有结构嘛?
后面实际上还是使用了 WebSocket QwQ

Cgrain 4年前

@。淑女范erり: 大佬下来冒个泡

Cgrain 4年前
< >
分享
最佳答案
0

想要一个好的解决方案,最关键的一点是需求尽可能清楚,明白。

  1. 数据实时读取并不是原始的需求,要清楚为啥需要实时读取数据。
  2. 实时是个假需求,一般人并不需要实时数据,差个几分钟通常是没问题的,有时候,差个1天都没问题。
  3. 当然,有钱任性。这时候就不用怕啥循环读取了,有钱的话写100个循环去读也OK。
  4. 本质上都是循环,只是有的循环占用的资源高,有的占用的资源低而已。
收获园豆:10
爱编程的大叔 | 高人七级 |园豆:30844 | 2020-05-12 10:30

对, 因为我们获取到数据,插入到数据库这已经就产生了耗时间, 刚开始使用ajax 定时获取,只不过频率太长,造成了数据差异大了, 然后修改了定时请求频率, 现在就接近1s 去请求, 但是就造成了页面卡顿,资源占用高了(有些请求还会失败掉)
最后选择 WebSocket (这里把前端请求放在了后面,只不过用了循环去定时读取数据了)
听您这么说 本质都要用到 循环 那我就这样了, 实在不行, 就在 插入数据库的时候顺便做一个 推送操作

永远跟党走i | 园豆:1542 (小虾三级) | 2020-05-12 10:47

@Cgrain:

实在不行, 就在 插入数据库的时候顺便做一个 推送操作

就算是这样的解决方案也好过你循环读取数据100倍。
想想为啥,我先不说。

爱编程的大叔 | 园豆:30844 (高人七级) | 2020-05-12 10:50
其他回答(2)
0

要不死循实时读,要不发布订阅循环发,死循环没啥问题啊,你担心啥呢?循环内出问题卡住吗。。。

收获园豆:5
猝不及防 | 园豆:2878 (老鸟四级) | 2020-05-12 09:11

没有 ,就感觉这里一点不正常(对死循环有点恐惧), 但是又没有想到什么办法, 所以想问下各位大佬,听听各位大佬的想法,或者思路

支持(0) 反对(0) 永远跟党走i | 园豆:1542 (小虾三级) | 2020-05-12 09:14
0

第一种是使用定时轮询 去查, 不过一般也并不是用死循环, 而是在上一方法执行结束后再间隔多少时间后重复执行方法。
第二种是使用WebSocket 做一个监听等待, 接受到信号在去执行。
性能在第二种好一些,兼容性 第一种好。

收获园豆:5
Tom.汤 | 园豆:3060 (老鸟四级) | 2020-05-12 10:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册