@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 @@
|
|
|
1
|
+
{"version":3,"file":"redis.service.js","sourceRoot":"","sources":["../../../src/redis/redis.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { RedisService } from '../redis/redis.service';
|
|
2
|
+
/**
|
|
3
|
+
* 客户端代理
|
|
4
|
+
* Worker通过此类与客户端通信
|
|
5
|
+
*/
|
|
6
|
+
export declare class ClientProxy {
|
|
7
|
+
/** 用户 ID(在 Gateway 层 gw:auth 确定,不可更改) */
|
|
8
|
+
readonly userId: string;
|
|
9
|
+
readonly connectionId: string;
|
|
10
|
+
readonly gatewayId: string;
|
|
11
|
+
private readonly redisService;
|
|
12
|
+
readonly workerId: string;
|
|
13
|
+
roomId?: string | undefined;
|
|
14
|
+
/** 认证数据,来自 Room.onAuth 的返回值 */
|
|
15
|
+
auth?: unknown;
|
|
16
|
+
constructor(
|
|
17
|
+
/** 用户 ID(在 Gateway 层 gw:auth 确定,不可更改) */
|
|
18
|
+
userId: string, connectionId: string, gatewayId: string, redisService: RedisService, workerId: string, roomId?: string | undefined);
|
|
19
|
+
/**
|
|
20
|
+
* 发送消息给客户端
|
|
21
|
+
*
|
|
22
|
+
* @param msgIdOrType - 消息ID(数字,兼容旧版本)或消息类型(字符串,推荐)
|
|
23
|
+
* @param payload - 消息负载
|
|
24
|
+
*/
|
|
25
|
+
send(msgIdOrType: number | string, payload: unknown): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* 发送成功响应
|
|
28
|
+
*/
|
|
29
|
+
sendSuccess(msgIdOrType: number | string, data?: Record<string, unknown>): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 发送错误响应
|
|
32
|
+
*/
|
|
33
|
+
sendError(msgIdOrType: number | string, error: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 广播给房间其他玩家
|
|
36
|
+
*/
|
|
37
|
+
broadcast(msgType: string, payload: unknown, excludeSelf?: boolean): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 广播给房间所有玩家(包括自己)
|
|
40
|
+
*/
|
|
41
|
+
broadcastAll(msgType: string, payload: unknown): Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=client-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-proxy.d.ts","sourceRoot":"","sources":["../../../src/room/client-proxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;;GAGG;AACH,qBAAa,WAAW;IAKpB,yCAAyC;aACzB,MAAM,EAAE,MAAM;aACd,YAAY,EAAE,MAAM;aACpB,SAAS,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;aACb,QAAQ,EAAE,MAAM;IACzB,MAAM,CAAC,EAAE,MAAM;IAVxB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;;IAGb,yCAAyC;IACzB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EAChB,YAAY,EAAE,YAAY,EAC3B,QAAQ,EAAE,MAAM,EACzB,MAAM,CAAC,EAAE,MAAM,YAAA;IAGxB;;;;;OAKG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzE;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlG;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrF;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClientProxy = void 0;
|
|
4
|
+
const core_1 = require("@roomkit/core");
|
|
5
|
+
/**
|
|
6
|
+
* 客户端代理
|
|
7
|
+
* Worker通过此类与客户端通信
|
|
8
|
+
*/
|
|
9
|
+
class ClientProxy {
|
|
10
|
+
userId;
|
|
11
|
+
connectionId;
|
|
12
|
+
gatewayId;
|
|
13
|
+
redisService;
|
|
14
|
+
workerId;
|
|
15
|
+
roomId;
|
|
16
|
+
/** 认证数据,来自 Room.onAuth 的返回值 */
|
|
17
|
+
auth;
|
|
18
|
+
constructor(
|
|
19
|
+
/** 用户 ID(在 Gateway 层 gw:auth 确定,不可更改) */
|
|
20
|
+
userId, connectionId, gatewayId, redisService, workerId, roomId) {
|
|
21
|
+
this.userId = userId;
|
|
22
|
+
this.connectionId = connectionId;
|
|
23
|
+
this.gatewayId = gatewayId;
|
|
24
|
+
this.redisService = redisService;
|
|
25
|
+
this.workerId = workerId;
|
|
26
|
+
this.roomId = roomId;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 发送消息给客户端
|
|
30
|
+
*
|
|
31
|
+
* @param msgIdOrType - 消息ID(数字,兼容旧版本)或消息类型(字符串,推荐)
|
|
32
|
+
* @param payload - 消息负载
|
|
33
|
+
*/
|
|
34
|
+
async send(msgIdOrType, payload) {
|
|
35
|
+
// 在payload中注入roomId,让客户端知道消息来自哪个房间
|
|
36
|
+
const payloadWithRoom = this.roomId && typeof payload === 'object' && payload !== null
|
|
37
|
+
? { ...payload, roomId: this.roomId }
|
|
38
|
+
: payload;
|
|
39
|
+
// 判断是使用新的字符串类型还是旧的数字ID
|
|
40
|
+
const isNewFormat = typeof msgIdOrType === 'string';
|
|
41
|
+
const message = {
|
|
42
|
+
type: 'client-response',
|
|
43
|
+
workerId: this.workerId,
|
|
44
|
+
connectionId: this.connectionId,
|
|
45
|
+
// 新格式使用 msgType,旧格式使用 msgId
|
|
46
|
+
...(isNewFormat ? { msgType: msgIdOrType } : { msgId: msgIdOrType }),
|
|
47
|
+
payload: payloadWithRoom,
|
|
48
|
+
timestamp: Date.now(),
|
|
49
|
+
};
|
|
50
|
+
await this.redisService.publish(core_1.RedisChannels.rpcGateway(this.gatewayId), message);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 发送成功响应
|
|
54
|
+
*/
|
|
55
|
+
async sendSuccess(msgIdOrType, data = {}) {
|
|
56
|
+
await this.send(msgIdOrType, { success: true, ...data });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 发送错误响应
|
|
60
|
+
*/
|
|
61
|
+
async sendError(msgIdOrType, error) {
|
|
62
|
+
await this.send(msgIdOrType, { success: false, error });
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 广播给房间其他玩家
|
|
66
|
+
*/
|
|
67
|
+
async broadcast(msgType, payload, excludeSelf = true) {
|
|
68
|
+
if (!this.roomId) {
|
|
69
|
+
console.warn('[ClientProxy] Cannot broadcast without roomId');
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const message = {
|
|
73
|
+
type: 'room-broadcast',
|
|
74
|
+
workerId: this.workerId,
|
|
75
|
+
roomId: this.roomId,
|
|
76
|
+
excludeUserId: excludeSelf ? this.userId : undefined,
|
|
77
|
+
msgType,
|
|
78
|
+
payload,
|
|
79
|
+
timestamp: Date.now(),
|
|
80
|
+
};
|
|
81
|
+
await this.redisService.publish(core_1.RedisChannels.broadcast(), message);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 广播给房间所有玩家(包括自己)
|
|
85
|
+
*/
|
|
86
|
+
async broadcastAll(msgType, payload) {
|
|
87
|
+
await this.broadcast(msgType, payload, false);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.ClientProxy = ClientProxy;
|
|
91
|
+
//# sourceMappingURL=client-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-proxy.js","sourceRoot":"","sources":["../../../src/room/client-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { RoomStatus, PlayerInfo, RoomSnapshot, AuthContext } from '@roomkit/core';
|
|
2
|
+
import { ClientProxy } from './client-proxy';
|
|
3
|
+
/**
|
|
4
|
+
* 状态编码配置
|
|
5
|
+
* 参考 Colyseus 设计:使用二进制编码而非 JSON 切片
|
|
6
|
+
*/
|
|
7
|
+
export interface StateEncodingOptions {
|
|
8
|
+
/** 是否使用二进制编码(默认 true,使用 @roomkit/state 的 encode 方法) */
|
|
9
|
+
useBinaryEncoding: boolean;
|
|
10
|
+
/** 是否压缩大状态(默认 true) */
|
|
11
|
+
compressLargeState: boolean;
|
|
12
|
+
/** 触发压缩的阈值字节数(默认 4KB) */
|
|
13
|
+
compressionThreshold: number;
|
|
14
|
+
}
|
|
15
|
+
export { AuthContext, ServerError } from '@roomkit/core';
|
|
16
|
+
/**
|
|
17
|
+
* 游戏房间抽象基类
|
|
18
|
+
* 类似 Colyseus 的 Room 设计
|
|
19
|
+
* 支持 @roomkit/state 状态同步
|
|
20
|
+
*/
|
|
21
|
+
export declare abstract class GameRoom<T = any> {
|
|
22
|
+
readonly roomId: string;
|
|
23
|
+
readonly gameType: string;
|
|
24
|
+
readonly maxPlayers: number;
|
|
25
|
+
readonly config: Record<string, unknown>;
|
|
26
|
+
status: RoomStatus;
|
|
27
|
+
players: Map<string, ClientProxy>;
|
|
28
|
+
playerInfos: Map<string, PlayerInfo>;
|
|
29
|
+
createdAt: number;
|
|
30
|
+
autoDispose: boolean;
|
|
31
|
+
autoDisposeTimeout: number;
|
|
32
|
+
private disposeTimer;
|
|
33
|
+
isMigrating: boolean;
|
|
34
|
+
sourceWorkerId?: string;
|
|
35
|
+
protected state: T | null;
|
|
36
|
+
private stateSyncInterval;
|
|
37
|
+
private stateSyncRate;
|
|
38
|
+
protected stateEncodingOptions: StateEncodingOptions;
|
|
39
|
+
private stateVersion;
|
|
40
|
+
persistenceCallback?: (event: any) => void;
|
|
41
|
+
constructor(roomId: string, gameType: string, maxPlayers: number, config?: Record<string, unknown>);
|
|
42
|
+
/**
|
|
43
|
+
* 静态认证方法(推荐)
|
|
44
|
+
*
|
|
45
|
+
* 在创建房间实例前验证用户身份,适合需要在加入前验证 token 的场景。
|
|
46
|
+
*
|
|
47
|
+
* @param token - 客户端传入的认证 token
|
|
48
|
+
* @param options - 加入房间的选项
|
|
49
|
+
* @param context - 认证上下文,包含 IP、headers 等信息
|
|
50
|
+
* @returns 返回用户数据(truthy)允许加入,返回 falsy 或抛出错误拒绝加入
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* static async onAuth(token: string, options: any, context: AuthContext) {
|
|
55
|
+
* // 验证 JWT
|
|
56
|
+
* const user = await JWT.verify(token);
|
|
57
|
+
* if (!user) throw new ServerError('INVALID_TOKEN', 'Token 无效');
|
|
58
|
+
*
|
|
59
|
+
* // 验证房间密码
|
|
60
|
+
* if (options.password !== 'secret') {
|
|
61
|
+
* throw new ServerError('WRONG_PASSWORD', '密码错误');
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* // 返回用户数据,会附加到 client.auth
|
|
65
|
+
* return { userId: user.id, username: user.name };
|
|
66
|
+
* }
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
static onAuth(token: string, options: Record<string, unknown>, context: AuthContext): Promise<unknown>;
|
|
70
|
+
/**
|
|
71
|
+
* 房间创建时调用
|
|
72
|
+
*/
|
|
73
|
+
abstract onCreate(options: Record<string, unknown>): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* 实例鉴权方法(需要访问房间状态时使用)
|
|
76
|
+
*
|
|
77
|
+
* 如果同时定义了 static onAuth 和实例 onAuth,两者都会被调用。
|
|
78
|
+
* static onAuth 先执行,通过后再执行实例 onAuth。
|
|
79
|
+
*
|
|
80
|
+
* @param client - 客户端代理,包含 userId、auth 等信息
|
|
81
|
+
* @param options - 加入房间的选项
|
|
82
|
+
* @param context - 认证上下文
|
|
83
|
+
* @returns true 允许加入,false 或抛出错误拒绝加入
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* async onAuth(client, options, context) {
|
|
88
|
+
* // 检查是否在黑名单
|
|
89
|
+
* if (this.blacklist.has(client.userId)) {
|
|
90
|
+
* await client.send(MessageType.ERROR, {
|
|
91
|
+
* code: 'BANNED',
|
|
92
|
+
* message: '你已被封禁'
|
|
93
|
+
* });
|
|
94
|
+
* return false;
|
|
95
|
+
* }
|
|
96
|
+
*
|
|
97
|
+
* // 检查房间密码
|
|
98
|
+
* if (this.config.password && options.password !== this.config.password) {
|
|
99
|
+
* throw new ServerError('WRONG_PASSWORD', '密码错误');
|
|
100
|
+
* }
|
|
101
|
+
*
|
|
102
|
+
* return true;
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
onAuth(client: ClientProxy, options: Record<string, unknown>, context?: AuthContext): Promise<boolean>;
|
|
107
|
+
/**
|
|
108
|
+
* 玩家加入后调用
|
|
109
|
+
*
|
|
110
|
+
* @param client - 客户端代理
|
|
111
|
+
* @param options - 加入房间的选项
|
|
112
|
+
* @param auth - 来自 static onAuth 的返回值(如果定义了 static onAuth)
|
|
113
|
+
*/
|
|
114
|
+
abstract onJoin(client: ClientProxy, options: Record<string, unknown>, auth?: unknown): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* 玩家离开时调用
|
|
117
|
+
*/
|
|
118
|
+
abstract onLeave(client: ClientProxy, reason: string): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* 收到玩家消息时调用
|
|
121
|
+
* @param client - 客户端代理
|
|
122
|
+
* @param msgType - 消息类型(字符串)
|
|
123
|
+
* @param payload - 消息载荷
|
|
124
|
+
*/
|
|
125
|
+
abstract onMessage(client: ClientProxy, msgType: string, payload: unknown): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* 房间销毁前调用
|
|
128
|
+
*/
|
|
129
|
+
abstract onDispose(): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* 添加玩家
|
|
132
|
+
*/
|
|
133
|
+
addPlayer(client: ClientProxy, playerInfo: PlayerInfo): void;
|
|
134
|
+
/**
|
|
135
|
+
* 移除玩家
|
|
136
|
+
*/
|
|
137
|
+
removePlayer(userId: string): void;
|
|
138
|
+
/**
|
|
139
|
+
* 获取玩家数量
|
|
140
|
+
*/
|
|
141
|
+
get playerCount(): number;
|
|
142
|
+
/**
|
|
143
|
+
* 获取所有玩家信息
|
|
144
|
+
*/
|
|
145
|
+
getPlayerInfos(): PlayerInfo[];
|
|
146
|
+
/**
|
|
147
|
+
* 检查玩家是否在房间
|
|
148
|
+
*/
|
|
149
|
+
hasPlayer(userId: string): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* 获取玩家
|
|
152
|
+
*/
|
|
153
|
+
getPlayer(userId: string): ClientProxy | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* 广播给所有玩家
|
|
156
|
+
*/
|
|
157
|
+
broadcast(msgType: string, payload: unknown, excludeUserId?: string): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* 发送消息给特定玩家
|
|
160
|
+
*/
|
|
161
|
+
send(userId: string, msgType: string, payload: unknown): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* 设置状态同步间隔
|
|
164
|
+
* @param intervalMs 间隔毫秒数,0 表示禁用自动同步
|
|
165
|
+
*/
|
|
166
|
+
setStateSyncInterval(intervalMs: number): void;
|
|
167
|
+
/**
|
|
168
|
+
* 同步状态(增量更新)
|
|
169
|
+
*/
|
|
170
|
+
private syncState;
|
|
171
|
+
/**
|
|
172
|
+
* 设置状态编码配置
|
|
173
|
+
*/
|
|
174
|
+
setStateEncodingOptions(options: Partial<StateEncodingOptions>): void;
|
|
175
|
+
/**
|
|
176
|
+
* 发送完整状态给特定玩家
|
|
177
|
+
*
|
|
178
|
+
* 参考 Colyseus 设计:
|
|
179
|
+
* 1. 优先使用二进制编码(@roomkit/state 的 encode 方法)
|
|
180
|
+
* 2. 如果状态实现了 encode(true),使用二进制格式
|
|
181
|
+
* 3. 否则回退到 JSON 格式
|
|
182
|
+
*/
|
|
183
|
+
sendFullState(userId: string): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* 广播完整状态给所有玩家
|
|
186
|
+
*/
|
|
187
|
+
broadcastFullState(): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* 获取客户端列表(兼容性方法)
|
|
190
|
+
*/
|
|
191
|
+
get clients(): Map<string, ClientProxy>;
|
|
192
|
+
/**
|
|
193
|
+
* 计划销毁房间
|
|
194
|
+
*/
|
|
195
|
+
private scheduleDispose;
|
|
196
|
+
/**
|
|
197
|
+
* 销毁房间
|
|
198
|
+
* 需要子类或RoomManager调用
|
|
199
|
+
*/
|
|
200
|
+
dispose(): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* 创建房间快照用于迁移
|
|
203
|
+
* 子类可以覆盖 getGameState() 来序列化游戏特定状态
|
|
204
|
+
*/
|
|
205
|
+
createSnapshot(workerId: string): RoomSnapshot;
|
|
206
|
+
/**
|
|
207
|
+
* 从快照恢复房间状态
|
|
208
|
+
* 子类可以覆盖 restoreGameState() 来恢复游戏特定状态
|
|
209
|
+
*/
|
|
210
|
+
restoreFromSnapshot(snapshot: RoomSnapshot): void;
|
|
211
|
+
/**
|
|
212
|
+
* 获取游戏特定状态(子类需要覆盖)
|
|
213
|
+
* 返回可 JSON 序列化的对象
|
|
214
|
+
*/
|
|
215
|
+
protected getGameState(): unknown;
|
|
216
|
+
/**
|
|
217
|
+
* 恢复游戏特定状态(子类需要覆盖)
|
|
218
|
+
*/
|
|
219
|
+
protected restoreGameState(state: unknown): void;
|
|
220
|
+
/**
|
|
221
|
+
* 迁移前的准备工作(可选覆盖)
|
|
222
|
+
* 例如:暂停游戏逻辑、保存关键状态
|
|
223
|
+
*/
|
|
224
|
+
onMigrationStart(): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* 迁移完成后的回调(可选覆盖)
|
|
227
|
+
* 在新 Worker 上调用
|
|
228
|
+
*/
|
|
229
|
+
onMigrationComplete(): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* 迁移失败时的回调(可选覆盖)
|
|
232
|
+
*/
|
|
233
|
+
onMigrationFailed(error: string): Promise<void>;
|
|
234
|
+
/**
|
|
235
|
+
* 获取当前状态(供持久化使用)
|
|
236
|
+
*/
|
|
237
|
+
getState(): any;
|
|
238
|
+
/**
|
|
239
|
+
* 记录状态变更事件(供子类使用)
|
|
240
|
+
*/
|
|
241
|
+
protected recordStateChange(type: string, data: any): void;
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=game-room.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-room.d.ts","sourceRoot":"","sources":["../../../src/room/game-room.ts"],"names":[],"mappings":"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"}
|