接口路径说明
开播前校验/liveroom/check_live校验是否具备开播条件,返回默认标题/封面
开播/liveroom/start_live创建直播会话,初始化 live_log 和缓存
关播/liveroom/close_live主播主动关闭当前直播
直播间信息/liveroom/info查询主播当前直播间的缓存信息
修改直播间信息/liveroom/update直播中修改标题/封面/简介(仅缓存)
实时直播数据/liveroom/live_stats查询时长/人数/粉丝/收入/净消耗

公共说明

所有接口均为 POST,Content-Type 为 application/x-protobuf,响应同为 protobuf 二进制。开启 debug 模式时支持 JSON 格式调试。

公共请求头 OyeBaseReq

字段类型必填说明
keystring必填客户端与服务端约定的 key
timestampint64必填当前时间戳(秒)
nonceint64必填随机数(10位)
tokenstring必填用户 token(登录后获取)
languagestring可选语言标识:en / ar / zh / hi,影响错误信息语言

公共响应头 OyeBaseRsp

字段类型说明
err_codeint320 = 成功,其余为错误码
err_msgstring错误描述(语言由请求的 language 决定)

1. 开播前校验

POST/chatroom/liveroom/check_live

校验当前 token 对应用户是否具备开播条件,返回默认标题和封面供客户端预填。此接口仅做只读校验,不创建任何状态,可重复调用。

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头
room_typeint32可选房间类型(预留字段,暂不使用)

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
can_livebool是否允许开播
reason_codeint32不允许原因错误码(can_live=false 时有效)
reason_msgstring不允许原因描述
default_titlestring默认直播间标题
default_coverstring默认封面 URL
default_introstring默认简介
family_idint64主播所属家族 ID(0 表示无家族)
preset_room_idint64预设直播房 ID(固定等于 uid)

2. 开播

POST/chatroom/liveroom/start_live

执行开播:校验身份 → 创建/复用直播房 → 初始化 live_log 和 ROOM/LIVEROOM/LIVELOG 缓存。若主播已在播,重复调用返回已有会话(幂等)。

直播房 ID 固定等于主播 UID,全局唯一。开播成功后客户端需保存 room_id,关播和查询接口依赖此值。

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头
titlestring可选直播标题,为空时使用 default_title
coverstring可选封面 URL,为空时使用 default_cover
introstring可选直播间简介

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
can_livebool是否开播成功
reason_codeint32失败原因错误码
reason_msgstring失败原因描述
room_idint64直播房间 ID(= 主播 uid)
is_new_roombool是否本次新建房间(false 表示复用已有房间)
default_titlestring实际生效的标题
default_coverstring实际生效的封面
family_idint64主播所属家族 ID

3. 关播

POST/chatroom/liveroom/close_live

主播主动关闭当前直播。服务端执行:防重锁 → 双重状态校验(Redis + DB)→ 清理 DB/缓存 → 向房间所有用户推送 TCP 消息 LiveEndC2S2C (1018)

同一主播同一时刻只允许一次关播请求通过(原子防重锁)。并发重复请求返回 ErrorLiveAlreadyClosed。若 Redis 和 DB 均已非直播状态,也直接返回 ErrorLiveAlreadyClosed,不重复执行清理。

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头(token 标识主播身份)

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
durationint32本次直播时长(秒)
interactive_viewersint32本场互动观众数(峰值)
income_goldint64本场主播收入(金币,已含分成计算)
consume_diamondint64本场净消耗钻石(= 总送礼钻石 − 幸运礼物返还,可能为负)
new_fansint32本场新增粉丝数

4. 直播间信息

POST/chatroom/liveroom/info

查询主播当前直播间的缓存态信息(标题、封面、是否在播)。数据来自 Redis 缓存,未开播时 title/cover/intro 退回到主播个人信息默认值。

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
room_idint64直播房间 ID
is_livingbool当前是否处于直播中
titlestring当前直播间标题(来自缓存)
coverstring当前封面 URL
introstring当前直播间简介

5. 修改直播间信息

POST/chatroom/liveroom/update

直播进行中修改标题、封面或简介。变更仅写入 Redis 缓存,不落数据库,并实时向房间内所有用户推送 TCP 消息 ChatRoomInfoChangeS2C (2240)

仅限直播中调用(liveState == LiveStateLive,或房间内有用户作为兜底)。标题会经过风控过滤,违规内容自动替换为 ***

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头
titlestring可选新标题(为空则不修改)
coverstring可选新封面 URL(为空则不修改)
introstring可选新简介(传空字符串则清空)

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
room_idint64直播房间 ID
is_livingbool当前是否处于直播中
titlestring修改后实际生效的标题
coverstring修改后实际生效的封面
introstring修改后实际生效的简介

6. 实时直播数据

POST/chatroom/liveroom/live_stats

查询当前正在进行的直播的实时统计数据,供主播端数据面板轮询使用。若主播当前不在播,is_living=false,其余字段均为 0。

2 秒内重复请求返回 Redis 快照缓存,不重复计算。超过 2 秒才重新从缓存聚合计算并刷新快照,可按此频率合理设置轮询间隔。

请求参数

字段类型必填说明
baseOyeBaseReq必填公共请求头

响应字段

字段类型说明
baseOyeBaseRsp公共响应头
is_livingbool当前是否处于直播中,false 时其余字段均为 0
durationint32当前已播时长(秒),实时计算(now − opentime
total_viewersint32本场峰值观看人数
new_fansint32本场新增粉丝数
new_coinsint64本场主播收入(金币,已除以 100)
send_diamondsint64本场净消耗钻石(= 总送礼钻石 − 幸运礼物返还,可能为负)

错误码参考

错误码说明
0成功
ErrorLiveAlreadyClosed直播已关闭(关播防重/幂等返回)
ErrorLiveCreateRoomFail创建直播房失败
ErrorLiveRoom直播间状态异常(非直播中操作)
ErrorRoomId房间不存在