出鱼协议改为 OnFishResync 全量替换(废弃 OnFishSpawn(type=sync));socket.html 同步更新;后台 user/list.html 更新;version 2.11.11
This commit is contained in:
@@ -88,9 +88,9 @@
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-primary" id="btn-reset">
|
||||
<i class="layui-icon layui-icon-refresh"></i> 重置
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm layui-btn-warm" id="btn-sync-level">
|
||||
<!--<button type="button" class="layui-btn layui-btn-sm layui-btn-warm" id="btn-sync-level">
|
||||
<i class="layui-icon layui-icon-refresh-3"></i> 同步等级
|
||||
</button>
|
||||
</button>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" style="margin-bottom:0;">
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<script>
|
||||
layui.config({
|
||||
base: './dist/' //指定 layuiAdmin 项目路径
|
||||
, version: '2.11.10'
|
||||
, version: '2.11.11'
|
||||
}).use('index', function () {
|
||||
var layer = layui.layer, admin = layui.admin;
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ ul { padding-left: 20px; } li { margin: 4px 0; font-size: 13px; }
|
||||
expireAt: number, // 毫秒
|
||||
remainingSeconds: int
|
||||
}]
|
||||
}</pre></td><td>调用者</td><td>加入房间/断线重连/取消挂机返回房间信息。先用 activeFishes 初始化鱼群;服务端约 300ms 后还会向当前玩家补发同一批 OnFishSpawn(init),前端须按 fishId 去重。</td></tr>
|
||||
}</pre></td><td>调用者</td><td>加入房间/断线重连/取消挂机返回房间信息,活跃鱼随本事件在 <code>activeFishes</code> 中返回。<b>注意</b>:重连 / 取消挂机 / 挂起恢复场景会另行下发独立事件 <code>OnFishResync</code>(全量替换语义),前端按该事件重建鱼群。</td></tr>
|
||||
<tr><td><span class="tag tag-sc">S→C</span> SyncPlayerGold</td><td><code>long</code></td><td>调用者</td><td>金币同步(金币≤0时触发)</td></tr>
|
||||
<tr><td><span class="tag tag-sc">S→C</span> SendPlayerInfoResult</td><td><code>long?</code></td><td>调用者</td><td>玩家Gold值</td></tr>
|
||||
<tr><td><span class="tag tag-sc">S→C</span> GetRoomInfoResult</td><td><code>RedisGameRoom?</code></td><td>调用者</td><td>房间信息查询结果</td></tr>
|
||||
@@ -288,7 +288,7 @@ ul { padding-left: 20px; } li { margin: 4px 0; font-size: 13px; }
|
||||
position: int, showWaiting: bool? }</pre></td><td>房间组</td><td>座位变更(加入/离开)</td></tr>
|
||||
|
||||
<tr class="row-new"><td><span class="tag tag-sc">S→C</span> OnFishSpawn<span class="tag-new">NEW</span></td><td><pre>{
|
||||
type: "init" | "spawn" | "sync", // init=进房补发,spawn=定时出鱼,sync=主动同步
|
||||
type: "init" | "spawn", // init=进房补发,spawn=定时出鱼(sync 已废弃:重连/恢复改走 OnFishResync)
|
||||
timestamp: number, // 服务器当前时间戳(毫秒)
|
||||
fish: [{
|
||||
fishId: number, // 普通鱼ID;鱼阵时为首条普通鱼ID(兼容旧客户端)
|
||||
@@ -300,7 +300,23 @@ ul { padding-left: 20px; } li { margin: 4px 0; font-size: 13px; }
|
||||
expireAt: number, // 鱼过期时间戳(毫秒)
|
||||
remainingSeconds: int // 鱼剩余存活秒数
|
||||
}]
|
||||
}</pre></td><td>房间组(init/spawn)/调用者(sync)</td><td><code>fishIds</code> 在首次出鱼、定时出鱼、入房及重连同步中都必须提供。普通鱼为单元素集合 <code>[fishId]</code>;鱼阵按鱼阵配置的生成顺序使用 ID 集合。鱼阵的 <code>fishNumber</code> 为空,鱼信息由 <code>fishArrayNumber</code> 对应的本地配置确定。击中时把对应 ID 作为 KillFish 的 <code>fihsId</code> 原样传回。</td></tr>
|
||||
}</pre></td><td>房间组</td><td><code>fishIds</code> 在首次出鱼、定时出鱼、入房及重连同步中都必须提供。普通鱼为单元素集合 <code>[fishId]</code>;鱼阵按鱼阵配置的生成顺序使用 ID 集合。鱼阵的 <code>fishNumber</code> 为空,鱼信息由 <code>fishArrayNumber</code> 对应的本地配置确定。击中时把对应 ID 作为 KillFish 的 <code>fihsId</code> 原样传回。</td></tr>
|
||||
<tr class="row-new"><td><span class="tag tag-sc">S→C</span> OnFishResync<span class="tag-new">NEW</span></td><td><pre>{
|
||||
roomId: string, // 房间ID
|
||||
timestamp: number, // 服务器当前时间戳(毫秒)
|
||||
serverTime: string, // "yyyy-MM-dd HH:mm:ss.fff"
|
||||
count: number, // 鱼数量(鱼阵按阵型合并为一条)
|
||||
fish: [{ // 与 OnFishSpawn 相同的鱼结构
|
||||
fishId: number,
|
||||
fishIds: number[],
|
||||
fishNumber: string,
|
||||
routeId: number,
|
||||
fishArrayNumber: string,
|
||||
createdAt: number, // 毫秒
|
||||
expireAt: number, // 毫秒
|
||||
remainingSeconds: int
|
||||
}]
|
||||
}</pre></td><td>调用者</td><td><b>全量替换语义</b>:客户端应<b>先清空本地旧鱼</b>,再按 <code>fish</code> 列表重建(不要把本事件当作增量补发)。用于断线重连、挂起恢复等场景,<b>替代原 <code>OnFishSpawn(type=sync)</code></b>;<code>type=sync</code> 已废弃。</td></tr>
|
||||
<tr><td><span class="tag tag-sc">S→C</span> KillNotice</td><td><pre>{
|
||||
FishId: string, // 鱼编号
|
||||
userName: string, // 玩家名
|
||||
@@ -562,7 +578,7 @@ ul { padding-left: 20px; } li { margin: 4px 0; font-size: 13px; }
|
||||
<li>无 -> 无操作,等待后续指令</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>返回结果:RoomInfo(首个真人注册后的首次鱼群放入 activeFishes,约 300ms 后向当前玩家补发 OnFishSpawn(type=init))</li>
|
||||
<li>返回结果:RoomInfo(首个真人注册后的首次鱼群放入 activeFishes;重连/恢复场景另行下发 OnFishResync 全量替换)</li>
|
||||
</ol>
|
||||
|
||||
<h4>5. CancelPlayerAfk 流程</h4>
|
||||
@@ -602,7 +618,7 @@ ul { padding-left: 20px; } li { margin: 4px 0; font-size: 13px; }
|
||||
<ul>
|
||||
<li>首个真人进房 -> RegisterRoom -> 启动定时器持续出鱼</li>
|
||||
<li>定时出鱼 -> OnFishSpawn(type=spawn) 广播房间组</li>
|
||||
<li>后续真人进房/重连/取消挂机 -> GetActiveFishes -> 嵌入 RoomInfo.activeFishes 返回,并约 300ms 后补发 OnFishSpawn(type=init)</li>
|
||||
<li>后续真人进房 -> GetActiveFishes -> 嵌入 RoomInfo.activeFishes 返回;重连 / 取消挂机 / 挂起恢复 -> 额外下发独立事件 OnFishResync(全量替换)</li>
|
||||
<li>最后一个真人退出/断线 -> UnregisterRoom -> 停止定时器 + 清除活跃鱼</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user