如题,假设现在的并发量是1万,当前用户是这一万条信息中最后发送给服务器处理的,那么为了在视觉上营造实时无延时的效果,所以需要优先对当前用户发送的弹幕信息进行筛选出来优先显示,但是websocket监听到的消息量很大,如果在前端js遍历,那么每时每刻都在遍历大量数据,效率很低,容易卡死,有没有什么高效的算法优先筛选出当前用户的弹幕信息,并且弹幕数量过多的时候怎么舍弃部分弹幕信息不显示
如题,假设现在的并发量是1万,当前用户是这一万条信息中最后发送给服务器处理的,那么为了在视觉上营造实时无延时的效果,所以需要优先对当前用户发送的弹幕信息进行筛选出来优先显示,但是websocket监听到的消息量很大,如果在前端js遍历,那么每时每刻都在遍历大量数据,效率很低,容易卡死,有没有什么高效的算法优先筛选出当前用户的弹幕信息,并且弹幕数量过多的时候怎么舍弃部分弹幕信息不显示
这是我写的一个基于canvas的弹幕插件,还在维护中,你可以看看:
https://segmentfault.com/a/11...
至于你的问题,你可以先显示在客户端,然后再上传到服务器,至于用户传到服务器后又重新返回的消息,直接过滤掉就行了,这样也不会显示两次,保证了虚假的及时性。
用户确定发送后,产生两个分支事件:
1.将该弹幕传送至后台处理(保存,再分发等);
2.直接在本地视频上显示,当然可能需要你监听websocket心跳以免出现“断网了却成功发送弹幕”的情况。
解决显示条目的问题,看产品有没有对显示字幕的具体内容有要求,比如要求过滤不雅词汇的/忽略过长的/删除重复的等等,如果不需要的话,前端可以简单的做按照单位时间内弹幕量,用一定的比例加乘后随机抽取显示。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
当前发的内容直接显示,不需要过服务端。