编写之初,在网上找了很多关于springboot整合dplayer实现弹幕的方式,发现案例很少,然后自己就着手写一个小项目,分享给大家~

注:Dplayer版本:v1.22.2

流程:前端自定义弹幕发送与获取方式 =》后端进行接收,格式转化,入队(延时队列),散列入库时间,减少服务器压力

话不多说,先看效果图

 

 代码示例:

我使用的是前后端分离的方式,下列分别展示前端和后端的代码

1、前端dplayer参数:

这里只展示了options里面的自定义弹幕参数和弹幕配置参数,其它的参数配置请看dplayer的官网http://dplayer.js.org/guide.html#quick-start

apiBackend里面是自定义弹幕的接收和发送方式,如果没有配置这个apiBackend,则必须在danmaku里面需要加上api参数来指定获取和发送弹幕的路径

注:执行callback函数时会把获取的数据设置到视频弹幕列表里面,执行cb函数时(发送弹幕),会把发送弹幕的对话框关闭掉

让我们来看看前端接收弹幕时获取的数据格式把:起初我以为第三列字段是颜色的十六进制(也就是要把#fff转为16.....),但后来发现就是默认的发送时的颜色数据#xxx而已,并不需要转换

需要转换的仅仅只有弹幕类型type,下面会介绍,我们继续往下看~

 再来看看后端是如何获取弹幕列表进行格式转化的:

根据视频id去数据库查弹幕列表最多2000条,然后利用parseDanmakuListToArray方法把数据库弹幕列表转成Object类型的数组

参数字段顺序分别是:时间、类型(0、1、2)、颜色#xxx、作者、内容

 

因为我数据库的弹幕类型存的是top、bottom这种类型的,在转化的时候就要用到另一个方法把类型转一下:

再来看看弹幕实体类:

起初我有加上颜色十进制colorTen这个字段,因为网上都是把颜色转为十进制的,但是我发现我的版本用这样的方式颜色无效,所以我就使用#xxx的方式,这里我保留了颜色十进制这个字段,也可以去掉这个字段。

这样就完成了弹幕的获取和展示拉,接下来再来看看怎么实现弹幕延时入库的:


前端发送弹幕的数据:

后端接口代码:后端以Map方式接收弹幕参数,然后设置到弹幕实体类对象中,校验调用者的token(没有的可以忽略),然后再调用延时队列弹幕入队(调用完后台等待一定时间(1小时的随机时间,毫秒)消费者会去消费这条弹幕并把它插入数据库中),最后返回

来看看RabbitMq的配置信息:

注意,rabbitmq需要下载插件rabbitmq_delayed_message_exchange,配置后重启mq才能实现延时队列的功能

插件地址:https://www.rabbitmq.com/community-plugins.html

请下载与自己mq版本对应的插件!!

下载后就是一个这样的文件

把这个插件放到mq服务的插件目录下,比如我的是在/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.5/plugins/

然后在/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.5/sbin中执行rabbitmq-plugins  enable rabbitmq_delayed_message_exchange启用插件

最后重启RabbitMq就可以了rabbitmq-server restart

 

接下来我们编写消息发送者的类:

 

消息消费者类(消费弹幕参数,插入数据库):

发送一条弹幕后,查看后台延时入库日志:

 

到这里就完成了弹幕的延时插入还有展示的功能了,感谢观看~o(* ̄▽ ̄*)ブ

最新文章

  1. 【重磅开源】Hawk-数据抓取工具:简明教程
  2. 自己画WinForm 皮肤包括默认控件
  3. JavaScript跨域总结与解决办法
  4. Sublime Text 插件 & 使用技巧
  5. VS2013 调试MVC源码[MVC5.2.3+MVC4Web项目]
  6. requirejs实验002. r.js合并文件. 初体验.
  7. iOS openURL方法实现打电话、发短信、发邮件、打开其他App
  8. EMV标准
  9. Python 2.7 学习笔记 中文处理
  10. MyBatis一级缓存引起的无穷递归
  11. Spring IO Platform简介及示例
  12. css阴影,边框,渐变,背景
  13. 105&250-高级软件工程2017第3次作业
  14. Android类加载机制及热修复实现
  15. PageRank之基于C C#的基本实现
  16. ●BZOJ 3831 [Poi2014]Little Bird
  17. Vue.js02:数据绑定v-model用法
  18. WinForm关于更新程序的设计思路
  19. xp与win7双系统时删除win7启动菜单
  20. mysql查看连接数排查问题

热门文章

  1. docker swarm快速部署redis分布式集群
  2. 跟我学Python图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效
  3. 驱动开发:内核监控FileObject文件回调
  4. javascript异步编程,promise概念
  5. xss学习笔记(萌新版)
  6. 从 QFramework 重新开始
  7. 记一次线上频繁fullGc的排查解决过程
  8. Karmada大规模测试报告发布:突破100倍集群规模
  9. Anaconda环境搭配(Ipython)-获得jupyter notebook(适用Win10)
  10. Apache Dubbo 多语言体系再添新员:首个 Rust 语言版本正式发布