| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 开发者不骗开发者,你跟我说这只要100块? -> 正文阅读 |
|
[移动开发]开发者不骗开发者,你跟我说这只要100块? |
导语2021腾讯游戏年度发布会在线上举行。今年,发布会以“超级数字场景”战略理念为核心,传递对游戏认知、产业边界的建设性思考,并通过60余款游戏产品与内容集中发布,展现腾讯游戏为玩家带来的丰富体验与多元价值。 本次发布会再次选择了云开发 CloudBase 作为技术选型之一,以极低的成本实现了实时弹幕系统,并保障稳定运行,为游戏爱好者带来了优质互动体验。下文将重点介绍项目组使用云开发实现弹幕功能的全过程。 “各部门注意,前方高能!” 一、业务背景2021腾讯游戏年度发布会开发了专属小程序,包含直播、抽奖、观看回放等功能,其中所有的弹幕功能均基于云开发的实时数据推送实现。
在综合考虑成本、稳定性、与小程序适配性等多个方面后,项目最终选择了云开发的实时数据推送功能,早在去年的发布会里,项目组就使用了云开发的实时数据推送来实现直播节目单进度提醒等功能,在此基础上,把弹幕也统一搬上云开发。 二、技术实践开发思路一开始想直接把全部用户的弹幕集合直接监听,但官方限制单次监听数据不能大于5000条,且监听数据条越多初始化性能越差,超出上限会抛错并停止监听。最后设计为:用户弹幕插入集合a,监听数据集合b,使用云函数的定时器定期合并弹幕,并更新到对应的正在监听的数据记录上(如图)。 代码演示用户发送弹幕部分代码:
弹幕合并处理:
前端处理消息通知,注意不要重复 watch。其中如果打开了云开发的匿名登录,那 H5 端的页面同样可以使用同步弹幕功能:
至此,整个弹幕的核心功能已经完全实现。 二次优化跑了一段时间后发现偶现丢弃几秒内的弹幕,后面查看执行日志,发现即使配置定时器为每秒执行一次,实际生产中也不是严格每秒执行一次,有时候会跳过1-3秒去执行,这里另外使用了 redis 去标记当前处理的进度,即使有跳过的秒数,也能往前回溯未处理的时间进行补录。其中云函数使用 redis 的教程可以查看官方云函数使用 redis 教程。
弹幕合并处理,注意:要 redis5.0 以上的才支持 zpopmin 命令,如需购买,需要选对版本。
安全逻辑上也做了一定的策略,如本地先渲染发送的弹幕,客户端收到弹幕推送时,判断 openid 为自己时候不渲染,这样即使用户的弹幕被过滤掉也能在本地展现,保留一定的用户体验。 另外,单个云函数的实例上限是1000,如果确定当晚流量比较大,可以考虑用多个云函数分摊流量。 管理后台的实现同时,利用 watch 功能可以做到管理后台同步实时刷新客户端的弹幕,达到管理的目的,同一份代码前端和管理端都能复用:
集合的读权限设置在实时数据推送里同样生效,如果权限是设置为仅可读用户自己的数据,则监听的时候无法监听到非用户自己创建的数。 Tips当时没注意到 watch 对数据库权限限制的问题,数据库权限默认为仅创建者可读写,循环数组第一次初始化是开发过程中在客户端创建,默认添加了当前用户的openid,导致其他用户无法读取到 merge 的数据,解决方法:删除 openid 字段或设置权限为全部人可读。 集合的读权限设置在实时数据推送里同样生效,如果权限是设置为仅可读用户自己的数据,则监听的时候无法监听到非用户自己创建的数。 三、项目成果与价值基于云开发的云函数、实时数据推送、云数据库等能力,项目全程平稳运行,即便在发布会当晚流量峰值的时候,弹幕的写入运行稳定。在监听方面(读),watch 的性能能够稳定支持百万级同时在线。 总体上,项目采用云开发,具备以下优势:
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:27:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |