1.优化websocket接口,新增赔率参数

This commit is contained in:
2026-05-15 16:24:19 +08:00
parent 575aa279bd
commit 91229f4477
13 changed files with 434 additions and 40 deletions

View File

@@ -235,17 +235,17 @@
- `default_bet_chip_id`int含义默认选中的筹码标识来自 `game_config.default_bet_chip_id`,非法或指向无效档位时服务端回退为首个有效档)
- `min_bet_per_number`string含义单号码最小下注额须 ≤ 所选筹码面额且受后台配置约束)
- `max_bet_per_number`string含义单号码最大下注额
- `streak_win_reward`object含义连胜赔率配置来自 `game_config.streak_win_reward`,与后台「连胜奖励」一致)
- `rows`array<object>(固定 110 档,按 `streak` 升序)
- `streak`int连胜档位 110下注时 `streak_at_bet=0` 适用档位 1`streak_at_bet=n` 适用档位 `min(n+1, 10)`
- `odds_factor`int赔率乘数中奖派彩 = 本笔 `total_amount` × `odds_factor`
- `is_jackpot`bool是否大奖档触发 `jackpot.hit` 等流程)
- `dictionary`array<object>
- `number`int1-36含义字花编号
- `name`string含义字花名称
- `category`string含义字花分类
- `icon`string含义图标资源地址
- `user_snapshot`object`coin``current_streak`含义:用户状态快照)
- `user_snapshot`object含义用户状态快照 + **当前玩家本局适用赔率**,不下发 110 全表
- `coin`string余额
- `current_streak`int当前连胜场数
- `streak_level`int若本局中奖将使用的连胜档位 110`min(current_streak+1, 10)` 推导)
- `odds_factor`int赔率乘数中奖派彩 = 本笔 `total_amount` × `odds_factor`
- `is_jackpot`bool是否大奖档
### 3.2 获取36字花字典可缓存
- **POST** `/api/game/dictionaryList`
@@ -750,9 +750,11 @@
- **建议消息**
- 心跳:`{"action":"ping"}`
- 服务端对心跳的当前实现回包:`{"event":"pong","server_time":"YYYY-mm-dd HH:ii:ss"}`**注意**:此处 `server_time` 为**本地时间字符串**,与业务推送帧里 `server_time` 常用**秒级 int** 不一致,客户端解析时请分支处理)
- 订阅状态流:`{"action":"subscribe","topics":["period.tick","period.opened"]}`
- 订阅状态流:`{"action":"subscribe","topics":["period.tick"]}`
- 订阅连胜/赔率(仅当前玩家):`{"action":"subscribe","topics":["user.streak","wallet.changed","bet.accepted"]}`
- 订阅资金流:`{"action":"subscribe","topics":["bet.accepted","wallet.changed"]}`
- 订阅托管流:`{"action":"subscribe","topics":["auto.spin.progress","wallet.changed"]}`
- 移动端推荐合并订阅:`period.tick``user.streak``wallet.changed``bet.accepted``period.opened`
#### 7.1.1 消息协议字段定义(联调口径)
@@ -770,10 +772,22 @@
- **仅建立连接不会自动下发全部业务消息**;客户端需要发送 `subscribe` 明确订阅主题。
- 成功订阅后服务端返回:`{"event":"ws.subscribed","topics":[...]}`
- 若未订阅主题,通常只能收到握手首帧(`ws.connected`)和心跳回包(`pong`)。
- **不下发** `streak_win_reward` 全表110 档);赔率仅通过 `user.streak` / `wallet.changed` / `bet.accepted``lobbyInit.user_snapshot` 推送**当前登录玩家**本局适用字段。
#### 7.1.2A 连胜赔率与连胜场次WebSocket
- **`user.streak`**(开奖结算后推送;载荷为当前玩家本局适用赔率)
- `data.user_id`int
- `data.current_streak`int
- `data.streak_level`int
- `data.odds_factor`int
- `data.is_jackpot`bool
- **`wallet.changed` / `bet.accepted`**:在原有字段上合并同上 **`current_streak`**、**`streak_level`**、**`odds_factor`**、**`is_jackpot`**;客户端按 `user_id` 过滤,仅处理本用户
#### 7.1.3 推送频率与触发规则(当前实现)
- `period.tick`**每秒一次**(用于倒计时、状态同步)。
- `period.tick`**每秒一次**(用于倒计时、状态同步**不含**赔率全表)。
- `user.streak`:每期结算更新用户连胜后按用户推送(未中奖也会推送,`current_streak` 可能归零)。
- `admin.live.snapshot`**每秒一次**(后台实时对局页全量快照)。
- `period.opened` / `period.payout` / `admin.live.opened`:按开奖流程阶段触发(事件触发型,非固定频率)。
- `wallet.changed`:仅在余额发生变更时推送(如下注扣款、充值入账、派彩入账)。