首页 新闻 会员 周边 捐助

前端vue渲染大量socket消息页面卡死

0
[待解决问题]

现在的场景是:web端-vue-前端需要实时的展示刷新一个结果数据,这个数据普遍在2000条左右。后端使用socket在实时的推送,因为需要消息的实时性,所以后端会一直推,速度大概是七八百条/秒。前端需要用什么方法有效的渲染这个数据,或者后端需要怎么的改进。(这里有一个实际的问题:数据需要实时性,后端这边一直获取最新信息然后推送给前端。)

前端局部展示代码:

// 渲染部分
<div v-for="item in listinfo">
<el-tag effect="plain" type="info" style="display: block;border: none;font-size: 14px" >
{{item}}
</el-tag>
</div>
<div v-for="item in listinfo1">
<el-tag effect="plain" type="info" style="display: block;border: none;font-size: 14px" >
{{item}}
</el-tag>
</div>

//参数部分
export default {
name: "case",
components: {},
data() {
listinfo: [],
listinfo1: [],
}
}

// socket部分
connectsocket(){
let url = 'ws://.....';
this.ws = new websocket(url)
this.ws.onmessage = function(e){
var text = JSON.parse(e.data)
if (typeof text.message="string"){
if(text.message
="start"){
that.getList()
that.getTreeselect()
that.exeAbel = true
that.readOnly = true
}else if(text.message='end'){
that.result()
that.getList()
that.getTreeselect()
that.exeAbel = false
that.readOnly = false
}else if(text.msg_type
='run'){
that.infolist.push(text.message)
}else if(text.msg_type='run1'){
that.infolist1.push(text.message)
}
}else if(typeof text.message
="object"){
//这个消息数量很少,就不写了
}
}
}

林下黄昏后的主页 林下黄昏后 | 菜鸟二级 | 园豆:202
提问于:2021-08-02 11:08
< >
分享
所有回答(3)
0

每次显示个20条就可以了吧,全显示用户也看不到啊。 用户滑动滚动条时再加载呀。

写代码的小2B | 园豆:4377 (老鸟四级) | 2021-08-02 15:28

这个需要实现那种滚动刷新的效果,一直滚动显示最新的消息,直到没有信息才结束。就像svn提交或更新时那种,一直刷新滚动展示,然后滚动条也能看到大致数据量

支持(0) 反对(0) 林下黄昏后 | 园豆:202 (菜鸟二级) | 2021-08-02 16:26
0

分页或者懒加载

是卡门啊 | 园豆:210 (菜鸟二级) | 2021-08-02 18:09
0

socket 每次推少点或者频率低点,vue 用 computed 缓存数据, template 滚动分页渲染

U型枕 | 园豆:231 (菜鸟二级) | 2021-08-02 23:51

后端推送降低频率的可能性不大,因为数据一直在堆积。能具体说说前端这块的解决方法吗?谢谢,我前端不是太懂

支持(0) 反对(0) 林下黄昏后 | 园豆:202 (菜鸟二级) | 2021-08-05 11:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册