高并发实时弹幕如何筛选出当前用户弹幕内容优先显示

如题,假设现在的并发量是1万,当前用户是这一万条信息中最后发送给服务器处理的,那么为了在视觉上营造实时无延时的效果,所以需要优先对当前用户发送的弹幕信息进行筛选出来优先显示,但是websocket监听到的消息量很大,如果在前端js遍历,那么每时每刻都在遍历大量数据,效率很低,容易卡死,有没有什么高效的算法优先筛选出当前用户的弹幕信息,并且弹幕数量过多的时候怎么舍弃部分弹幕信息不显示

图片描述

阅读 4.4k
4 个回答

所以需要优先对当前用户发送的弹幕信息进行筛选出来优先显示

当前发的内容直接显示,不需要过服务端。

这是我写的一个基于canvas的弹幕插件,还在维护中,你可以看看:
https://segmentfault.com/a/11...

至于你的问题,你可以先显示在客户端,然后再上传到服务器,至于用户传到服务器后又重新返回的消息,直接过滤掉就行了,这样也不会显示两次,保证了虚假的及时性。

能不能这种做法,用户发消息时候把消息内容存再一个固定变量上,服务端把消息发送给除了当前用户的其他人,再给用户返回个标志信息,每当客户端收到这个标志信息时候,就直接展示当前的消息

新手上路,请多包涵

用户确定发送后,产生两个分支事件:
1.将该弹幕传送至后台处理(保存,再分发等);
2.直接在本地视频上显示,当然可能需要你监听websocket心跳以免出现“断网了却成功发送弹幕”的情况。

解决显示条目的问题,看产品有没有对显示字幕的具体内容有要求,比如要求过滤不雅词汇的/忽略过长的/删除重复的等等,如果不需要的话,前端可以简单的做按照单位时间内弹幕量,用一定的比例加乘后随机抽取显示。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题