对接
This commit is contained in:
+22
-9
@@ -4,7 +4,7 @@
|
||||
|
||||
## WebSocket
|
||||
|
||||
连接现有 WebSocket 地址(默认 `/ws`),握手必须携带 GVA JWT:
|
||||
连接现有 WebSocket 地址(默认 `/ws`)。观看直播允许匿名握手;登录用户可携带 GVA JWT,以使用聊天和开播能力:
|
||||
|
||||
```text
|
||||
wss://host/ws?token=<x-token>
|
||||
@@ -16,7 +16,7 @@ wss://host/ws?token=<x-token>
|
||||
{"type":"Join","payload":{"role":"publisher","streamId":"room-1"}}
|
||||
```
|
||||
|
||||
角色支持 `publisher`、`subscriber`、`observer`。主播和观众完成 Join 后,浏览器发送 SDP offer:
|
||||
角色支持 `publisher`、`subscriber`、`observer`。`subscriber` 可匿名加入,`publisher` 必须登录且只能发布自己拥有的启用直播间。主播和观众完成 Join 后,浏览器发送 SDP offer:
|
||||
|
||||
```json
|
||||
{"type":"Offer","payload":{"type":"offer","sdp":"v=0..."}}
|
||||
@@ -34,7 +34,6 @@ wss://host/ws?token=<x-token>
|
||||
- `SubscriberLeft`
|
||||
- `StreamListUpdate`
|
||||
- `Kicked`
|
||||
- `ChatHistory`:加入房间后返回最近 100 条聊天和礼物消息
|
||||
- `ChatMessage`:普通聊天广播
|
||||
- `GiftMessage`:送礼成功后的礼物广播
|
||||
|
||||
@@ -44,7 +43,7 @@ wss://host/ws?token=<x-token>
|
||||
{"type":"ChatSend","payload":{"content":"大家好"}}
|
||||
```
|
||||
|
||||
聊天只允许已经以主播或观众身份加入该房间的登录用户发送,内容最多 50 个字符。
|
||||
聊天只允许已经以主播或观众身份加入该房间的登录用户发送,内容最多 50 个字符。消息只保存在当前服务进程内,每个房间最多 100 条;加入房间不会回放进入前的消息,开播、关播或服务重启都会清空该房间聊天。
|
||||
|
||||
主播和观众 45 秒没有心跳会被清理,直播房间最多 20 个;同一用户在同一房间重复观看时,旧连接会收到 `Kicked`。
|
||||
|
||||
@@ -55,34 +54,48 @@ wss://host/ws?token=<x-token>
|
||||
```text
|
||||
GET /live/streams
|
||||
GET /live/streams/:streamId
|
||||
GET /api/streams # 旧客户端兼容别名
|
||||
GET /live/categories
|
||||
GET /live/rooms?page=1&pageSize=20&categoryId=1&status=live
|
||||
GET /live/rooms?page=1&pageSize=20&categoryId=1&status=live&orderBy=viewer_count_desc
|
||||
GET /live/rooms/:id
|
||||
POST /live/rooms/:id/like
|
||||
GET /live/rooms/:id/messages?limit=100
|
||||
GET /live/gifts
|
||||
GET /live/recharge/providers
|
||||
GET /live/recharge/plans
|
||||
```
|
||||
|
||||
`/live/rooms` 默认只返回当前直播中的启用房间,并按在线人数倒序排列;支持 `categoryId`、`page`、`pageSize` 和 `orderBy` 筛选/排序。房间响应同时返回 `viewerCountText`(如 `5.1k`、`1.0w`)以及直播中的 `startedAt`。
|
||||
|
||||
聊天历史 HTTP 接口保留用于客户端契约兼容,但验证房间后始终返回空列表,不会向新进入用户泄露此前聊天。
|
||||
|
||||
PC 客户端账号接口:
|
||||
|
||||
```text
|
||||
POST /live/client/auth/register
|
||||
POST /live/client/auth/login
|
||||
POST /live/client/auth/logout
|
||||
GET /live/client/me
|
||||
GET /live/client/balance
|
||||
PUT /live/client/me
|
||||
PUT /live/client/me/password
|
||||
```
|
||||
|
||||
客户端账号使用系统的 `sys_users` 表,注册时创建普通直播角色并初始化 100 钻石。注册和修改密码都会返回新的 JWT 登录态。
|
||||
客户端账号使用系统的 `sys_users` 表。注册昵称可选,未填写时使用用户名,填写时限制为 2–16 个字符;新账号创建普通直播角色并初始化 100 钻石,历史账号缺少钱包时也补建 100 钻石。注册和修改密码都会返回新的 JWT 登录态。
|
||||
|
||||
登录后可调用:
|
||||
|
||||
```text
|
||||
GET /live/rooms/:id/follow
|
||||
POST /live/rooms/:id/follow
|
||||
DELETE /live/rooms/:id/follow
|
||||
POST /live/rooms/:id/gifts
|
||||
GET /live/recharge/plans
|
||||
POST /live/recharge/orders
|
||||
GET /live/recharge/orders/:orderNo
|
||||
GET /live/recharge/orders/:orderNo/status
|
||||
```
|
||||
|
||||
点赞不要求登录,点赞数只在当前进程的直播运行态中累加;关注关系按直播用户和房间保存,登录后可查询、关注或取消关注。
|
||||
|
||||
创建充值订单直接接入 KRA 通用支付订单,请求使用支付模块的渠道标识:
|
||||
|
||||
```json
|
||||
@@ -96,7 +109,7 @@ POST /live/recharge/orders
|
||||
|
||||
充值档位、用户和钻石数量保存在直播业务订单中;渠道交易号、支付状态、回调、退款状态和事件流水统一保存在 KRA 的 `pay_orders` / `pay_events`。支付确认后由通用支付发货流程幂等增加钻石余额。
|
||||
|
||||
礼物数量必须使用礼物接口返回的 `tiers`,扣款、礼物流水和钱包余额在同一事务内完成;成功后通过 `GiftMessage` 广播给房间内在线用户。
|
||||
礼物数量允许 `1..9999`,礼物接口返回的 `tiers` 仅作为快捷数量。服务端会拒绝向未开播房间送礼;扣款、礼物流水和钱包余额在同一事务内完成,余额不会小于 0。余额不足时返回 `required`、`balance` 和 `missing`,供客户端打开充值流程;成功后通过 `GiftMessage` 广播给房间内在线用户。
|
||||
|
||||
全站设置继续保存在 `live_settings`。字典用于稳定的枚举和下拉选项,不适合承载站点名称、公告、功能开关、兑换比例等需要类型校验和运行时读取的配置。
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"creation_time":"2026-09-21T06:30:55.339Z","expires_at":-1,"id":7,"name":"robot$live+live","secret":"R4p6ieacIogXE779eL1HXhCpA4bx4SA7"}
|
||||
Reference in New Issue
Block a user