@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.
Files changed (158) hide show
  1. package/README.md +122 -0
  2. package/dist/src/admin/admin.controller.d.ts +275 -0
  3. package/dist/src/admin/admin.controller.d.ts.map +1 -0
  4. package/dist/src/admin/admin.controller.js +296 -0
  5. package/dist/src/admin/admin.controller.js.map +1 -0
  6. package/dist/src/admin/admin.module.d.ts +3 -0
  7. package/dist/src/admin/admin.module.d.ts.map +1 -0
  8. package/dist/src/admin/admin.module.js +35 -0
  9. package/dist/src/admin/admin.module.js.map +1 -0
  10. package/dist/src/admin/admin.service.d.ts +282 -0
  11. package/dist/src/admin/admin.service.d.ts.map +1 -0
  12. package/dist/src/admin/admin.service.js +508 -0
  13. package/dist/src/admin/admin.service.js.map +1 -0
  14. package/dist/src/auth/auth.module.d.ts +10 -0
  15. package/dist/src/auth/auth.module.d.ts.map +1 -0
  16. package/dist/src/auth/auth.module.js +37 -0
  17. package/dist/src/auth/auth.module.js.map +1 -0
  18. package/dist/src/auth/auth.service.d.ts +21 -0
  19. package/dist/src/auth/auth.service.d.ts.map +1 -0
  20. package/dist/src/auth/auth.service.js +69 -0
  21. package/dist/src/auth/auth.service.js.map +1 -0
  22. package/dist/src/circuit-breaker/circuit-breaker.module.d.ts +3 -0
  23. package/dist/src/circuit-breaker/circuit-breaker.module.d.ts.map +1 -0
  24. package/dist/src/circuit-breaker/circuit-breaker.module.js +24 -0
  25. package/dist/src/circuit-breaker/circuit-breaker.module.js.map +1 -0
  26. package/dist/src/circuit-breaker/circuit-breaker.service.d.ts +89 -0
  27. package/dist/src/circuit-breaker/circuit-breaker.service.d.ts.map +1 -0
  28. package/dist/src/circuit-breaker/circuit-breaker.service.js +207 -0
  29. package/dist/src/circuit-breaker/circuit-breaker.service.js.map +1 -0
  30. package/dist/src/config/config.module.d.ts +3 -0
  31. package/dist/src/config/config.module.d.ts.map +1 -0
  32. package/dist/src/config/config.module.js +22 -0
  33. package/dist/src/config/config.module.js.map +1 -0
  34. package/dist/src/config/config.service.d.ts +19 -0
  35. package/dist/src/config/config.service.d.ts.map +1 -0
  36. package/dist/src/config/config.service.js +58 -0
  37. package/dist/src/config/config.service.js.map +1 -0
  38. package/dist/src/config/worker.config.d.ts +82 -0
  39. package/dist/src/config/worker.config.d.ts.map +1 -0
  40. package/dist/src/config/worker.config.js +35 -0
  41. package/dist/src/config/worker.config.js.map +1 -0
  42. package/dist/src/index.d.ts +48 -0
  43. package/dist/src/index.d.ts.map +1 -0
  44. package/dist/src/index.js +108 -0
  45. package/dist/src/index.js.map +1 -0
  46. package/dist/src/lifecycle/graceful-shutdown.service.d.ts +71 -0
  47. package/dist/src/lifecycle/graceful-shutdown.service.d.ts.map +1 -0
  48. package/dist/src/lifecycle/graceful-shutdown.service.js +221 -0
  49. package/dist/src/lifecycle/graceful-shutdown.service.js.map +1 -0
  50. package/dist/src/lifecycle/index.d.ts +2 -0
  51. package/dist/src/lifecycle/index.d.ts.map +1 -0
  52. package/dist/src/lifecycle/index.js +18 -0
  53. package/dist/src/lifecycle/index.js.map +1 -0
  54. package/dist/src/main.d.ts +2 -0
  55. package/dist/src/main.d.ts.map +1 -0
  56. package/dist/src/main.js +54 -0
  57. package/dist/src/main.js.map +1 -0
  58. package/dist/src/metrics/metrics.controller.d.ts +15 -0
  59. package/dist/src/metrics/metrics.controller.d.ts.map +1 -0
  60. package/dist/src/metrics/metrics.controller.js +44 -0
  61. package/dist/src/metrics/metrics.controller.js.map +1 -0
  62. package/dist/src/metrics/metrics.module.d.ts +7 -0
  63. package/dist/src/metrics/metrics.module.d.ts.map +1 -0
  64. package/dist/src/metrics/metrics.module.js +28 -0
  65. package/dist/src/metrics/metrics.module.js.map +1 -0
  66. package/dist/src/metrics/metrics.service.d.ts +65 -0
  67. package/dist/src/metrics/metrics.service.d.ts.map +1 -0
  68. package/dist/src/metrics/metrics.service.js +306 -0
  69. package/dist/src/metrics/metrics.service.js.map +1 -0
  70. package/dist/src/migration/migration.module.d.ts +3 -0
  71. package/dist/src/migration/migration.module.d.ts.map +1 -0
  72. package/dist/src/migration/migration.module.js +30 -0
  73. package/dist/src/migration/migration.module.js.map +1 -0
  74. package/dist/src/migration/migration.service.d.ts +68 -0
  75. package/dist/src/migration/migration.service.d.ts.map +1 -0
  76. package/dist/src/migration/migration.service.js +295 -0
  77. package/dist/src/migration/migration.service.js.map +1 -0
  78. package/dist/src/migration/room-migration.service.d.ts +92 -0
  79. package/dist/src/migration/room-migration.service.d.ts.map +1 -0
  80. package/dist/src/migration/room-migration.service.js +297 -0
  81. package/dist/src/migration/room-migration.service.js.map +1 -0
  82. package/dist/src/redis/redis.module.d.ts +3 -0
  83. package/dist/src/redis/redis.module.d.ts.map +1 -0
  84. package/dist/src/redis/redis.module.js +22 -0
  85. package/dist/src/redis/redis.module.js.map +1 -0
  86. package/dist/src/redis/redis.service.d.ts +68 -0
  87. package/dist/src/redis/redis.service.d.ts.map +1 -0
  88. package/dist/src/redis/redis.service.js +260 -0
  89. package/dist/src/redis/redis.service.js.map +1 -0
  90. package/dist/src/room/client-proxy.d.ts +43 -0
  91. package/dist/src/room/client-proxy.d.ts.map +1 -0
  92. package/dist/src/room/client-proxy.js +91 -0
  93. package/dist/src/room/client-proxy.js.map +1 -0
  94. package/dist/src/room/game-room.d.ts +243 -0
  95. package/dist/src/room/game-room.d.ts.map +1 -0
  96. package/dist/src/room/game-room.js +434 -0
  97. package/dist/src/room/game-room.js.map +1 -0
  98. package/dist/src/room/message-handler.service.d.ts +70 -0
  99. package/dist/src/room/message-handler.service.d.ts.map +1 -0
  100. package/dist/src/room/message-handler.service.js +541 -0
  101. package/dist/src/room/message-handler.service.js.map +1 -0
  102. package/dist/src/room/room-manager.service.d.ts +132 -0
  103. package/dist/src/room/room-manager.service.d.ts.map +1 -0
  104. package/dist/src/room/room-manager.service.js +571 -0
  105. package/dist/src/room/room-manager.service.js.map +1 -0
  106. package/dist/src/room/room-persistence.service.d.ts +101 -0
  107. package/dist/src/room/room-persistence.service.d.ts.map +1 -0
  108. package/dist/src/room/room-persistence.service.js +307 -0
  109. package/dist/src/room/room-persistence.service.js.map +1 -0
  110. package/dist/src/room/room-registry.service.d.ts +16 -0
  111. package/dist/src/room/room-registry.service.d.ts.map +1 -0
  112. package/dist/src/room/room-registry.service.js +60 -0
  113. package/dist/src/room/room-registry.service.js.map +1 -0
  114. package/dist/src/room/room.module.d.ts +15 -0
  115. package/dist/src/room/room.module.d.ts.map +1 -0
  116. package/dist/src/room/room.module.js +55 -0
  117. package/dist/src/room/room.module.js.map +1 -0
  118. package/dist/src/room/rooms/echo-room.d.ts +18 -0
  119. package/dist/src/room/rooms/echo-room.d.ts.map +1 -0
  120. package/dist/src/room/rooms/echo-room.js +85 -0
  121. package/dist/src/room/rooms/echo-room.js.map +1 -0
  122. package/dist/src/room/rooms/index.d.ts +2 -0
  123. package/dist/src/room/rooms/index.d.ts.map +1 -0
  124. package/dist/src/room/rooms/index.js +6 -0
  125. package/dist/src/room/rooms/index.js.map +1 -0
  126. package/dist/src/worker.module.d.ts +10 -0
  127. package/dist/src/worker.module.d.ts.map +1 -0
  128. package/dist/src/worker.module.js +46 -0
  129. package/dist/src/worker.module.js.map +1 -0
  130. package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts +2 -0
  131. package/dist/test/circuit-breaker/circuit-breaker.service.spec.d.ts.map +1 -0
  132. package/dist/test/circuit-breaker/circuit-breaker.service.spec.js +220 -0
  133. package/dist/test/circuit-breaker/circuit-breaker.service.spec.js.map +1 -0
  134. package/dist/test/integration/admin-api.spec.d.ts +2 -0
  135. package/dist/test/integration/admin-api.spec.d.ts.map +1 -0
  136. package/dist/test/integration/admin-api.spec.js +246 -0
  137. package/dist/test/integration/admin-api.spec.js.map +1 -0
  138. package/dist/test/migration/game-room-migration.spec.d.ts +2 -0
  139. package/dist/test/migration/game-room-migration.spec.d.ts.map +1 -0
  140. package/dist/test/migration/game-room-migration.spec.js +222 -0
  141. package/dist/test/migration/game-room-migration.spec.js.map +1 -0
  142. package/dist/test/room/client-proxy.spec.d.ts +2 -0
  143. package/dist/test/room/client-proxy.spec.d.ts.map +1 -0
  144. package/dist/test/room/client-proxy.spec.js +117 -0
  145. package/dist/test/room/client-proxy.spec.js.map +1 -0
  146. package/dist/test/room/game-room.spec.d.ts +2 -0
  147. package/dist/test/room/game-room.spec.d.ts.map +1 -0
  148. package/dist/test/room/game-room.spec.js +219 -0
  149. package/dist/test/room/game-room.spec.js.map +1 -0
  150. package/dist/test/room/room-manager.service.spec.d.ts +2 -0
  151. package/dist/test/room/room-manager.service.spec.d.ts.map +1 -0
  152. package/dist/test/room/room-manager.service.spec.js +280 -0
  153. package/dist/test/room/room-manager.service.spec.js.map +1 -0
  154. package/dist/test/setup.d.ts +2 -0
  155. package/dist/test/setup.d.ts.map +1 -0
  156. package/dist/test/setup.js +56 -0
  157. package/dist/test/setup.js.map +1 -0
  158. 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":"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"}