项目结构
以下为 xymj-colyseus-server 源码目录与主要模块职责索引,便于对照仓库阅读与二次开发。
入口与 Colyseus 配置
| 路径 | 说明 |
|---|---|
src/index.ts | 进程入口:加载 reflect-metadata、安装控制台日志前缀、调用 @colyseus/tools 的 listen(app)。 |
src/app.config.ts | Colyseus + Express 一体化配置:注册房间、静态资源、routing-controllers、Swagger、Playground(非生产)、Monitor、数据库与 Redis 初始化。 |
在 app.config.ts 的 initializeGameServer 中注册的 房间名(客户端 joinOrCreate 使用) 包括:
| 房间名 | 类 | 用途 |
|---|---|---|
my_room | MyRoom | 示例 / 模板房间 |
game_room | GameRoomExample | 帧同步对局房示例(匹配成功后进入);可替换为自有 Room |
matchmaker_room | MatchmakerRoom | 匹配与组队(主动排队 / 房间码开房) |
chat_world_room 等 | WorldChatRoom 等 | 世界 / 工会 / 附近 / 队伍聊天 |
loadtest_room | LoadTestRoom | 无 JWT 的并发压测房(仅测试) |
HTTP 与中间件
| 路径 | 说明 |
|---|---|
src/controllers/ | 装饰器控制器:LoginController、AuthController、HealthController、小游戏相关接口等;autoLoad/index.ts 聚合导出供 useExpressServer 使用。 |
src/middleware/ | auth.middleware、validation.middleware、error.middleware、decorator.middleware。 |
src/routes/index.ts | API 路由前缀等集中配置。 |
src/dto/ | 请求体验证 DTO(如认证)。 |
业务服务与数据
| 路径 | 说明 |
|---|---|
src/services/ | AuthService、AccessTokenAndLoginService、matchmaking/MatchmakingService(Redis 队列与房间队伍)等。 |
src/models/、src/database/ | TypeORM 实体与数据库连接。 |
src/utils/redis.ts | Redis 单例,供匹配、聊天跨实例、重连键等使用。 |
src/utils/jwt.ts | JWT 签发与校验。 |
房间与 Schema
| 路径 | 说明 |
|---|---|
src/rooms/schema/ | Colyseus Schema 状态定义(如 MyRoomState、聊天相关 Schema)。 |
src/rooms/chat/ | BaseChatRoom 及四类频道房间;世界频道通过 Redis Pub/Sub 跨进程同步。 |
src/utils/FrameSync.ts | FrameSyncManager 与 FrameSyncRoom 基类;示例对局房 GameRoomExample 继承它实现固定帧率与 input 消息处理。 |
src/utils/decorators/RequireAuth.ts | 房间方法鉴权装饰器(JWT)。 |
配置与文档相关
| 路径 | 说明 |
|---|---|
src/config/ | 应用端口、Colyseus ping、Swagger、小游戏等配置入口。 |
loadtest/ | 压测脚本示例。 |