弹幕玩法接入抖音云服务指南收藏我的收藏
收藏
我的收藏一、介绍
弹幕玩法是基于抖音直播场景的新型实时互动内容。弹幕玩法由开发者自主开发,接入平台并开放给抖音主播挂载使用。
弹幕玩法由「主播弹幕玩法客户端」和「开发者后端服务」 2 部分构成,「开发者后端服务」用于从抖音开放平台接收直播间点赞、送礼、评论的指令,并通过 webscoket 长链接实时推送到玩法客户端。厂商需要至少配置 1 个专职后端来搭建后端服务,在首次接入和后续上线运维中,开发者会面临着许多业务逻辑开发外的工作及挑战。
抖音云服务面向直播弹幕小玩法提供了解决方案,助力开发者专注业务开发,可降低开发成本(首次接入 3-14 人天,迭代减少 0.5 人天起),提升稳定性(指令推送到开发者服务的失败率降低 90%,时延降低 60%),云服务成本降低 10-30%。已支持上百款弹幕玩法入驻。
后端服务搭建上的问题及抖音云解决方案 | |||
| 问题 | 抖音云解决方案 | 开发者接入收益 |
首次接入成本 | 接收平台指令推送需要申请域名并 备案(7 -14 天起) | 免域名,直接走内网推送指令。 | 无需申请域名及备案,减少备案 7-14 人天 |
搭建指令实时推送到主播玩法客户端的 websocket 长链接链路,研发及维护成本高 | 提升接入效率
| 首次开发减少 3-14 人天,运维成本减少 3 人天,每次迭代减少 0.5 人天起 | |
难以预估上线后的并发数,不知道该如何配置服务器 | 无需提前预估服务器规格,服务根据并发弹性扩缩容 | 云服务成本减少 10-30% | |
上线后运维 | 流量突增后服务宕机导致业务中断 | 服务根据并发数弹性扩缩容,轻松应对流量突增 | 业务不再宕机,从 1h->0 |
走公网推送指令不可靠消息丢失,时延高 | 走内网推送指令到开发者后端服务 ,低延迟高可靠。 | 指令推送到开发者服务的失败率降低 90%,时延降低 60% | |
线上异常发现及定位难,缺少日志、告警等完善的运维工具。 | 完善的运维能力,监控、告警、日志 | 无需搭建运维基础设施,减少 3 人天,提升定位问题效率 |
深度与弹幕玩法业务场景结合,支持免登录、免鉴权调用 OpenAPI,支持免域名走内网专线推送指令到开发者服务,开发者服务推送给抖音云网关进行指令下发到主播玩法客户端。
二、接入要求
面向「弹幕玩法」类目开放接入。
三、接入流程
入驻抖音云
选择应用 | 开通抖音云 | 进入「总览页」 |
创建后端服务资源与存储组件,配置抖音回调
服务端开发
服务端开发全景图
小玩法开发者需要关注的几个核心环节
核心环节 | 对应步骤 | 具体逻辑 | 服务器部署在第三方云服务上时 | 开发者后端部署在抖音云上时 |
置换直播间信息 | 3、4、5、8 | 玩法客户端需要将 token 传给开发者服务器(步骤 3),开发者服务器通过 openAPI 访问平台服务器获取直播信息(步骤 4),拿到 room_id 并将 room_id 返回给玩法客户端(步骤 5/8) |
|
/start_game 接口 |
置顶礼物与开启推送任务 | 6、7 | 开发者需要通过 openAPI 访问平台服务器,设置置顶礼物(步骤 6)和开启推送任务(步骤 7),以便于来接收玩法指令推送; |
|
/start_game 接口 |
接收玩法指令推送并推送到玩法客户端 | 12、13、14 | 开发者通过 HTTP 接收平台的玩法指令推送(步骤 12),并将玩法指令推送到玩法客户端(步骤 13);并轮询查询失败数据,并补推到玩法客户端(步骤 14) |
|
/live_data_callback 接口 |
世界排行榜能力 | | 部分玩法开发者业务上有全局排行榜能力,需要每个结算周期 | |
|
通过抖音云 websocket 网关推送指令到客户端
小玩法服务器在收到直播间的互动数据(点赞、弹幕、送礼)后,开发者经过业务逻辑处理后,需要将对应数值信息推送到客户端,客户端完成动画渲染;
目前业界目前比较通用的方案是使用 websocket 协议来完成服务器向客户端的数据实时下推,但是开发者在使用 websocket 功能时往往面临如下问题:
- •消息延迟:主播端的网络环境变差时,原生 websocket 并不会立即感知,会导致底层的 tcp 数据包一直在重传,主播端的表现就是直播间的互动数据客户端迟迟没有收到,引发主播、观众投诉;
- •消息丢失:websocket 底层是基于可靠的 tcp 协议,但是当主播端网络抖动,导致连接断开;客户端需要及时感知此类事件并及时发起重连,而重连期间的消息,服务端需要有对应的存储机制,保证这段时间的消息不会丢失,否则引发用户投诉,甚至退款;
- •长连接服务器变更:服务端如果有业务逻辑变更,因为服务端有长连接服务器,所以需要平滑发布的能力,否则会导致发布期间连接断开,进而消息丢失;
- •动态扩缩容能力:传统 websocket 服务器,如果业务上遇到上下行推送的消息量激增,是无法通过水平扩容来解决的;开发者需要自行针对此类问题定制化扩缩容策略和热点问题;
针对上述传统 websocket 的问题,抖音云提供了 websocket 网关+Unity SDK 托管了长连接的管理和维护能力,开发者服务器只需要和抖音云网关之间通过 HTTP 请求的形式交互,就可以实现 websocket 消息的收发,并且具有:
- •消息秒级必达且不丢失:抖音云 websocket 网关保证消息推送秒级必达并且传输耗时小于 100ms,开发者可以更专注于业务逻辑开发;
- •服务发布和动态扩容能 力:开发者服务器通过 HTTP 请求和抖音云网关交互,长连接交由抖音云网关管理,开发者无需关心服务器发布期间连接断开的问题,并且服务器可以按照流量进行动态扩缩容,应对业务流量激增更从容。
代码示例
代码示例接口说明
可参考以下代码示例了解如何在抖音云搭建弹幕玩法的后端服务,该示例仅包含一个最小可执行的 Demo,真实用于线上环境请补齐业务相关逻辑并进行联调验证,如指令存储,排行榜结算等。
示例代码接口说明 | |||
接口 | 接口调用来源 | 接口功能 | 建议开发者添加的业务逻辑 |
/start_game | 主播玩法客户端 | 开始玩法对局可通过 callContainer 调用该接口,会调用弹幕玩法 OpenAPI 开始指令推送任务 |
|
/finish_game | 一局玩法结束时可通过 callContainer 调用该接口,做榜单排行和结算等逻辑。 |
| |
/websocket_callback | 抖音云 websocket 监听的回调函数,客户端建连/上行发消息都会走到该 HTTP 回调函数中。connectContainer 传入该 path。 |
| |
/live_data_callback | 抖音内网专线回调
| 通过抖音云服务接收直播间数据,内网专线加速+免域名备案。 |
|
JAVA 版本代码示例
接口 | 示例代码 | 功能解释 |
/start_game |
| 客户端在初始化后通过 callContainer 请求服务器对应 path,服务器可以直接在请求头中获取直播间相关信息,开发者无需通过 token 置换对应直播间信息 |
|
/live_data_callback 回调过来
| |
/websocket_callback |
|
x-tt-event-type 来区分属于哪种数据类型 |
/live_data_callback |
|
/start_game 示例中开启推送任务后,直播间指令数据即通过该接口发送到开发者的服务器上
|
Node.js 云函数接入示例
新建云函数项目后在云函数项目中创建文件,文件名称对应调用路径。
接口 | 示例代码 | 功能解释 |
/start_game |
|
|
|
|
/live_data_callback 回调过来
|
/websocket_callback |
|
x-tt-event-type 来区分属于哪种数据类型 |
/live_data_callback |
|
/start_game 示例中开启推送任务后,直播间指令数据即通过该接口发送到开发者的服务器上
|
/finish_game |
|
|
客户端接入
客户端与服务端联调
当开发者本地完成客户端与服务端开发后,会进入测试联调的阶段,可以参考:直播小玩法-测试与提审;但是当通过直播伴侣小扳手启动测试时,往往会因为挂机直播被封禁、服务端代码修改需要频繁部署等原因,导致测试阶段困难重重;针对这些情况抖音云推出了本地调试能力,开发者无需使用真实 token,并且可以在本地完成开发测试联调: