实现游戏大厅与房间模块:玩法插件化、匹配与房间生命周期管理

This commit is contained in:
2026-09-28 00:10:11 +08:00
parent 99d1827262
commit fb5a730ef3
19 changed files with 2492 additions and 18 deletions
+17 -8
View File
@@ -13,18 +13,27 @@ import (
const (
TypePing = "ping" // 应用层心跳:客户端周期性发送,服务端原样回 pong
// TODO(第二步 大厅):在此补充 TypeHallMatch = "hall.match"、TypeHallCancel = "hall.cancel"
// TODO(第二步 房间):在此补充 TypeRoomJoin = "room.join"、TypeRoomReady = "room.ready"、
// TypeRoomAction = "room.action"、TypeRoomLeave = "room.leave"、
// TypeRoomReconnect = "room.reconnect"
TypeHallMatch = "hall.match"
TypeHallCancel = "hall.cancel"
TypeRoomJoin = "room.join"
TypeRoomReady = "room.ready"
TypeRoomAction = "room.action"
TypeRoomLeave = "room.leave"
TypeRoomReconnect = "room.reconnect"
)
// ===== 下行消息类型:服务端 → 客户端 =====
const (
TypeHello = "hello" // 建连成功后下发的首条消息,携带 userID 与心跳建议间隔
TypePong = "pong" // 对上行 ping 的应答
TypeEvent = "event" // 业务事件统一信封:房间状态、对局事件等都走这个类型,payload 由各模块自定义
TypeError = "error" // 错误下行:参数错误、未支持类型、业务错误统一走这里
TypeHello = "hello" // 建连成功后下发的首条消息,携带 userID 与心跳建议间隔
TypePong = "pong" // 对上行 ping 的应答
TypeEvent = "event" // 业务事件统一信封:房间状态、对局事件等都走这个类型,payload 由各模块自定义
TypeError = "error" // 错误下行:参数错误、未支持类型、业务错误统一走这里
TypeHallMatched = "hall.matched" // 匹配成功,携带房间 ID
TypeHallCancelled = "hall.cancelled" // 匹配已取消
TypeRoomState = "room.state" // 房间全量快照
TypeRoomEvent = "room.event" // 玩法增量事件
TypeRoomFinished = "room.finished" // 对局结束与结算
TypeRoomClosed = "room.closed" // 房间已关闭
)
// Envelope 是上下行消息的统一信封。