@roomkit/worker 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +122 -0
- package/dist/src/admin/admin.controller.d.ts +275 -0
- package/dist/src/admin/admin.controller.d.ts.map +1 -0
- package/dist/src/admin/admin.controller.js +296 -0
- package/dist/src/admin/admin.controller.js.map +1 -0
- package/dist/src/admin/admin.module.d.ts +3 -0
- package/dist/src/admin/admin.module.d.ts.map +1 -0
- package/dist/src/admin/admin.module.js +35 -0
- package/dist/src/admin/admin.module.js.map +1 -0
- package/dist/src/admin/admin.service.d.ts +282 -0
- package/dist/src/admin/admin.service.d.ts.map +1 -0
- package/dist/src/admin/admin.service.js +508 -0
- package/dist/src/admin/admin.service.js.map +1 -0
- package/dist/src/auth/auth.module.d.ts +10 -0
- package/dist/src/auth/auth.module.d.ts.map +1 -0
- package/dist/src/auth/auth.module.js +37 -0
- package/dist/src/auth/auth.module.js.map +1 -0
- package/dist/src/auth/auth.service.d.ts +21 -0
- package/dist/src/auth/auth.service.d.ts.map +1 -0
- package/dist/src/auth/auth.service.js +69 -0
- package/dist/src/auth/auth.service.js.map +1 -0
- package/dist/src/circuit-breaker/circuit-breaker.module.d.ts +3 -0
- package/dist/src/circuit-breaker/circuit-breaker.module.d.ts.map +1 -0
- package/dist/src/circuit-breaker/circuit-breaker.module.js +24 -0
- package/dist/src/circuit-breaker/circuit-breaker.module.js.map +1 -0
- package/dist/src/circuit-breaker/circuit-breaker.service.d.ts +89 -0
- package/dist/src/circuit-breaker/circuit-breaker.service.d.ts.map +1 -0
- package/dist/src/circuit-breaker/circuit-breaker.service.js +207 -0
- package/dist/src/circuit-breaker/circuit-breaker.service.js.map +1 -0
- package/dist/src/config/config.module.d.ts +3 -0
- package/dist/src/config/config.module.d.ts.map +1 -0
- package/dist/src/config/config.module.js +22 -0
- package/dist/src/config/config.module.js.map +1 -0
- package/dist/src/config/config.service.d.ts +19 -0
- package/dist/src/config/config.service.d.ts.map +1 -0
- package/dist/src/config/config.service.js +58 -0
- package/dist/src/config/config.service.js.map +1 -0
- package/dist/src/config/worker.config.d.ts +82 -0
- package/dist/src/config/worker.config.d.ts.map +1 -0
- package/dist/src/config/worker.config.js +35 -0
- package/dist/src/config/worker.config.js.map +1 -0
- package/dist/src/index.d.ts +48 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +108 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lifecycle/graceful-shutdown.service.d.ts +71 -0
- package/dist/src/lifecycle/graceful-shutdown.service.d.ts.map +1 -0
- package/dist/src/lifecycle/graceful-shutdown.service.js +221 -0
- package/dist/src/lifecycle/graceful-shutdown.service.js.map +1 -0
- package/dist/src/lifecycle/index.d.ts +2 -0
- package/dist/src/lifecycle/index.d.ts.map +1 -0
- package/dist/src/lifecycle/index.js +18 -0
- package/dist/src/lifecycle/index.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +54 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/metrics/metrics.controller.d.ts +15 -0
- package/dist/src/metrics/metrics.controller.d.ts.map +1 -0
- package/dist/src/metrics/metrics.controller.js +44 -0
- package/dist/src/metrics/metrics.controller.js.map +1 -0
- package/dist/src/metrics/metrics.module.d.ts +7 -0
- package/dist/src/metrics/metrics.module.d.ts.map +1 -0
- package/dist/src/metrics/metrics.module.js +28 -0
- package/dist/src/metrics/metrics.module.js.map +1 -0
- package/dist/src/metrics/metrics.service.d.ts +65 -0
- package/dist/src/metrics/metrics.service.d.ts.map +1 -0
- package/dist/src/metrics/metrics.service.js +306 -0
- package/dist/src/metrics/metrics.service.js.map +1 -0
- package/dist/src/migration/migration.module.d.ts +3 -0
- package/dist/src/migration/migration.module.d.ts.map +1 -0
- package/dist/src/migration/migration.module.js +30 -0
- package/dist/src/migration/migration.module.js.map +1 -0
- package/dist/src/migration/migration.service.d.ts +68 -0
- package/dist/src/migration/migration.service.d.ts.map +1 -0
- package/dist/src/migration/migration.service.js +295 -0
- package/dist/src/migration/migration.service.js.map +1 -0
- package/dist/src/migration/room-migration.service.d.ts +92 -0
- package/dist/src/migration/room-migration.service.d.ts.map +1 -0
- package/dist/src/migration/room-migration.service.js +297 -0
- package/dist/src/migration/room-migration.service.js.map +1 -0
- package/dist/src/redis/redis.module.d.ts +3 -0
- package/dist/src/redis/redis.module.d.ts.map +1 -0
- package/dist/src/redis/redis.module.js +22 -0
- package/dist/src/redis/redis.module.js.map +1 -0
- package/dist/src/redis/redis.service.d.ts +68 -0
- package/dist/src/redis/redis.service.d.ts.map +1 -0
- package/dist/src/redis/redis.service.js +260 -0
- package/dist/src/redis/redis.service.js.map +1 -0
- package/dist/src/room/client-proxy.d.ts +43 -0
- package/dist/src/room/client-proxy.d.ts.map +1 -0
- package/dist/src/room/client-proxy.js +91 -0
- package/dist/src/room/client-proxy.js.map +1 -0
- package/dist/src/room/game-room.d.ts +243 -0
- package/dist/src/room/game-room.d.ts.map +1 -0
- package/dist/src/room/game-room.js +434 -0
- package/dist/src/room/game-room.js.map +1 -0
- package/dist/src/room/message-handler.service.d.ts +70 -0
- package/dist/src/room/message-handler.service.d.ts.map +1 -0
- package/dist/src/room/message-handler.service.js +541 -0
- package/dist/src/room/message-handler.service.js.map +1 -0
- package/dist/src/room/room-manager.service.d.ts +132 -0
- package/dist/src/room/room-manager.service.d.ts.map +1 -0
- package/dist/src/room/room-manager.service.js +571 -0
- package/dist/src/room/room-manager.service.js.map +1 -0
- package/dist/src/room/room-persistence.service.d.ts +101 -0
- package/dist/src/room/room-persistence.service.d.ts.map +1 -0
- package/dist/src/room/room-persistence.service.js +307 -0
- package/dist/src/room/room-persistence.service.js.map +1 -0
- package/dist/src/room/room-registry.service.d.ts +16 -0
- package/dist/src/room/room-registry.service.d.ts.map +1 -0
- package/dist/src/room/room-registry.service.js +60 -0
- package/dist/src/room/room-registry.service.js.map +1 -0
- package/dist/src/room/room.module.d.ts +15 -0
- package/dist/src/room/room.module.d.ts.map +1 -0
- package/dist/src/room/room.module.js +55 -0
- package/dist/src/room/room.module.js.map +1 -0
- package/dist/src/room/rooms/echo-room.d.ts +18 -0
- package/dist/src/room/rooms/echo-room.d.ts.map +1 -0
- package/dist/src/room/rooms/echo-room.js +85 -0
- package/dist/src/room/rooms/echo-room.js.map +1 -0
- package/dist/src/room/rooms/index.d.ts +2 -0
- package/dist/src/room/rooms/index.d.ts.map +1 -0
- package/dist/src/room/rooms/index.js +6 -0
- package/dist/src/room/rooms/index.js.map +1 -0
- package/dist/src/worker.module.d.ts +10 -0
- package/dist/src/worker.module.d.ts.map +1 -0
- package/dist/src/worker.module.js +46 -0
- package/dist/src/worker.module.js.map +1 -0
- package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts +2 -0
- package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts.map +1 -0
- package/dist/test/circuit-breaker/circuit-breaker.service.spec.js +220 -0
- package/dist/test/circuit-breaker/circuit-breaker.service.spec.js.map +1 -0
- package/dist/test/integration/admin-api.spec.d.ts +2 -0
- package/dist/test/integration/admin-api.spec.d.ts.map +1 -0
- package/dist/test/integration/admin-api.spec.js +246 -0
- package/dist/test/integration/admin-api.spec.js.map +1 -0
- package/dist/test/migration/game-room-migration.spec.d.ts +2 -0
- package/dist/test/migration/game-room-migration.spec.d.ts.map +1 -0
- package/dist/test/migration/game-room-migration.spec.js +222 -0
- package/dist/test/migration/game-room-migration.spec.js.map +1 -0
- package/dist/test/room/client-proxy.spec.d.ts +2 -0
- package/dist/test/room/client-proxy.spec.d.ts.map +1 -0
- package/dist/test/room/client-proxy.spec.js +117 -0
- package/dist/test/room/client-proxy.spec.js.map +1 -0
- package/dist/test/room/game-room.spec.d.ts +2 -0
- package/dist/test/room/game-room.spec.d.ts.map +1 -0
- package/dist/test/room/game-room.spec.js +219 -0
- package/dist/test/room/game-room.spec.js.map +1 -0
- package/dist/test/room/room-manager.service.spec.d.ts +2 -0
- package/dist/test/room/room-manager.service.spec.d.ts.map +1 -0
- package/dist/test/room/room-manager.service.spec.js +280 -0
- package/dist/test/room/room-manager.service.spec.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +56 -0
- package/dist/test/setup.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Type, OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import { PlayerInfo, RoomSnapshot, AuthContext } from '@roomkit/core';
|
|
3
|
+
import { ConfigService } from '../config/config.service';
|
|
4
|
+
import { RedisService } from '../redis/redis.service';
|
|
5
|
+
import { GameRoom } from './game-room';
|
|
6
|
+
import { ClientProxy } from './client-proxy';
|
|
7
|
+
import { RoomPersistenceService } from './room-persistence.service';
|
|
8
|
+
import type { RoomMigrationService } from '../migration/room-migration.service.js';
|
|
9
|
+
/**
|
|
10
|
+
* 房间管理器
|
|
11
|
+
*/
|
|
12
|
+
export declare class RoomManagerService implements OnModuleInit {
|
|
13
|
+
private readonly configService;
|
|
14
|
+
private readonly redisService;
|
|
15
|
+
private readonly persistenceService;
|
|
16
|
+
private readonly logger;
|
|
17
|
+
private rooms;
|
|
18
|
+
private roomTypes;
|
|
19
|
+
constructor(configService: ConfigService, redisService: RedisService, persistenceService: RoomPersistenceService);
|
|
20
|
+
private migrationService?;
|
|
21
|
+
/**
|
|
22
|
+
* 设置 MigrationService(从 MigrationModule 调用)
|
|
23
|
+
*/
|
|
24
|
+
setMigrationService(migrationService: RoomMigrationService): void;
|
|
25
|
+
/**
|
|
26
|
+
* 模块初始化,清理孤儿房间数据
|
|
27
|
+
*/
|
|
28
|
+
onModuleInit(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* 注册房间类型
|
|
31
|
+
*/
|
|
32
|
+
registerRoomType(gameType: string, roomClass: Type<GameRoom>): void;
|
|
33
|
+
/**
|
|
34
|
+
* 获取所有已注册的房间类型
|
|
35
|
+
*/
|
|
36
|
+
getRegisteredGameTypes(): string[];
|
|
37
|
+
/**
|
|
38
|
+
* 创建房间
|
|
39
|
+
*/
|
|
40
|
+
createRoom(roomId: string, gameType: string, maxPlayers: number, config: Record<string, unknown>, creatorClient: ClientProxy): Promise<GameRoom | null>;
|
|
41
|
+
/**
|
|
42
|
+
* 获取房间
|
|
43
|
+
*/
|
|
44
|
+
getRoom(roomId: string): GameRoom | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* 玩家加入房间
|
|
47
|
+
*
|
|
48
|
+
* 认证流程(Colyseus 风格):
|
|
49
|
+
* 1. 如果房间类定义了 static onAuth,先调用静态认证
|
|
50
|
+
* 2. 调用实例的 onAuth 方法
|
|
51
|
+
* 3. 两者都通过后才允许加入
|
|
52
|
+
*
|
|
53
|
+
* @param room 目标房间
|
|
54
|
+
* @param client 客户端代理
|
|
55
|
+
* @param options 加入选项
|
|
56
|
+
* @param context 认证上下文(可选)
|
|
57
|
+
*/
|
|
58
|
+
joinRoom(room: GameRoom, client: ClientProxy, options?: Record<string, unknown>, context?: AuthContext): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* 玩家离开房间
|
|
61
|
+
*/
|
|
62
|
+
leaveRoom(room: GameRoom, userId: string, reason: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* 销毁房间
|
|
65
|
+
*/
|
|
66
|
+
disposeRoom(roomId: string): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* 处理客户端断开
|
|
69
|
+
*/
|
|
70
|
+
handleDisconnect(roomId: string, userId: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* 更新Redis中的房间信息
|
|
73
|
+
*/
|
|
74
|
+
private updateRoomInRedis;
|
|
75
|
+
/**
|
|
76
|
+
* 清理Redis中的房间数据
|
|
77
|
+
*/
|
|
78
|
+
private cleanupRoomInRedis;
|
|
79
|
+
/**
|
|
80
|
+
* 通知Gateway用户加入房间
|
|
81
|
+
*/
|
|
82
|
+
private notifyUserJoinedRoom;
|
|
83
|
+
/**
|
|
84
|
+
* 通知Gateway用户离开房间
|
|
85
|
+
*/
|
|
86
|
+
private notifyUserLeftRoom;
|
|
87
|
+
/**
|
|
88
|
+
* 更新Worker统计信息
|
|
89
|
+
*/
|
|
90
|
+
private updateStats;
|
|
91
|
+
/**
|
|
92
|
+
* 获取所有房间
|
|
93
|
+
*/
|
|
94
|
+
getAllRooms(): Map<string, GameRoom>;
|
|
95
|
+
/**
|
|
96
|
+
* 获取房间数量
|
|
97
|
+
*/
|
|
98
|
+
getRoomCount(): number;
|
|
99
|
+
/**
|
|
100
|
+
* 从快照创建房间(用于迁移恢复)
|
|
101
|
+
*/
|
|
102
|
+
createRoomFromSnapshot(snapshot: RoomSnapshot): Promise<GameRoom | null>;
|
|
103
|
+
/**
|
|
104
|
+
* 重建客户端代理(用于迁移恢复)
|
|
105
|
+
*/
|
|
106
|
+
rebuildClientProxy(room: GameRoom, userId: string, gatewayId: string, connectionId: string, playerInfo: PlayerInfo): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* 移除房间(不通知玩家,用于迁移清理)
|
|
109
|
+
*/
|
|
110
|
+
removeRoomSilently(roomId: string): void;
|
|
111
|
+
/**
|
|
112
|
+
* 清理孤儿房间数据
|
|
113
|
+
* 检查Redis中的房间数据,如果对应的Worker不是当前Worker或房间实例不存在,则清理
|
|
114
|
+
*/
|
|
115
|
+
private cleanOrphanRooms;
|
|
116
|
+
/**
|
|
117
|
+
* 清理指定房间的所有Redis数据
|
|
118
|
+
*/
|
|
119
|
+
cleanRoomData(roomId: string): Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
*/
|
|
122
|
+
removeRoom(roomId: string): void;
|
|
123
|
+
/**
|
|
124
|
+
* 获取总玩家数
|
|
125
|
+
*/
|
|
126
|
+
getTotalPlayerCount(): number;
|
|
127
|
+
/**
|
|
128
|
+
* 从快照恢复房间(用于迁移)
|
|
129
|
+
*/
|
|
130
|
+
restoreRoom(snapshot: any): Promise<GameRoom | null>;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=room-manager.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-manager.service.d.ts","sourceRoot":"","sources":["../../../src/room/room-manager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,IAAI,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAKL,UAAU,EACV,YAAY,EACZ,WAAW,EAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAEnF;;GAEG;AACH,qBACa,kBAAmB,YAAW,YAAY;IAOnD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAE9D,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,SAAS,CAAqC;gBAGnC,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,sBAAsB;IAG7D,OAAO,CAAC,gBAAgB,CAAC,CAAuB;IAEhD;;OAEG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,oBAAoB,GAAG,IAAI;IAIjE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKnE;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,aAAa,EAAE,WAAW,GACzB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA+C3B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI7C;;;;;;;;;;;;OAYG;IACG,QAAQ,CACZ,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,OAAO,CAAC;IA2HnB;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC9E;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BhD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrE;;OAEG;YACW,iBAAiB;IAmB/B;;OAEG;YACW,kBAAkB;IAQhC;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,WAAW;IASzB;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIpC;;OAEG;IACH,YAAY,IAAI,MAAM;IAMtB;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6B9E;;OAEG;IACG,kBAAkB,CACtB,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC;IAmChB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;;OAGG;YACW,gBAAgB;IAkC9B;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BlD;OACG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAQ7B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;CAoE3D"}
|