重构network库(mvp版本)搭建基础设施和核心接口

定义ITransport/ISerializer/INetworkMessage接口
NetworkIdentity组件
基础事件定义
This commit is contained in:
YHH
2025-08-13 13:07:40 +08:00
parent 25136349ff
commit 62f250b43c
97 changed files with 1877 additions and 16607 deletions

View File

@@ -0,0 +1,283 @@
/**
* 网络消息协议定义
*/
import { MessageType, INetworkMessage, AuthorityType, SyncMode, RpcTarget } from '../types/NetworkTypes';
/**
* 连接请求消息
*/
export interface IConnectMessage extends INetworkMessage {
type: MessageType.CONNECT;
data: {
/** 客户端版本 */
clientVersion: string;
/** 协议版本 */
protocolVersion: string;
/** 认证令牌 */
authToken?: string;
/** 客户端信息 */
clientInfo: {
name: string;
platform: string;
version: string;
};
};
}
/**
* 连接响应消息
*/
export interface IConnectResponseMessage extends INetworkMessage {
type: MessageType.CONNECT;
data: {
/** 是否成功 */
success: boolean;
/** 分配的客户端ID */
clientId?: string;
/** 错误信息 */
error?: string;
/** 服务器信息 */
serverInfo?: {
name: string;
version: string;
maxPlayers: number;
currentPlayers: number;
};
};
}
/**
* 心跳消息
*/
export interface IHeartbeatMessage extends INetworkMessage {
type: MessageType.HEARTBEAT;
data: {
/** 客户端时间戳 */
clientTime: number;
/** 服务器时间戳(响应时包含) */
serverTime?: number;
};
}
/**
* 同步变量消息
*/
export interface ISyncVarMessage extends INetworkMessage {
type: MessageType.SYNC_VAR;
data: {
/** 网络实体ID */
networkId: number;
/** 组件类型名称 */
componentType: string;
/** 变化的属性 */
changes: Record<string, any>;
/** 同步模式 */
syncMode: SyncMode;
/** 时间戳 */
timestamp: number;
};
}
/**
* 批量同步消息
*/
export interface ISyncBatchMessage extends INetworkMessage {
type: MessageType.SYNC_BATCH;
data: {
/** 同步数据列表 */
syncData: Array<{
networkId: number;
componentType: string;
changes: Record<string, any>;
syncMode: SyncMode;
}>;
/** 批次时间戳 */
batchTimestamp: number;
};
}
/**
* RPC调用消息
*/
export interface IRpcCallMessage extends INetworkMessage {
type: MessageType.RPC_CALL;
data: {
/** 网络实体ID */
networkId: number;
/** 组件类型名称 */
componentType: string;
/** 方法名 */
methodName: string;
/** 参数列表 */
args: any[];
/** 调用ID用于响应匹配 */
callId?: string;
/** RPC目标 */
target: RpcTarget;
/** 是否需要响应 */
expectResponse?: boolean;
/** 超时时间 */
timeout?: number;
};
}
/**
* RPC响应消息
*/
export interface IRpcResponseMessage extends INetworkMessage {
type: MessageType.RPC_RESPONSE;
data: {
/** 调用ID */
callId: string;
/** 是否成功 */
success: boolean;
/** 返回值 */
result?: any;
/** 错误信息 */
error?: string;
};
}
/**
* 实体创建消息
*/
export interface IEntityCreateMessage extends INetworkMessage {
type: MessageType.ENTITY_CREATE;
data: {
/** 网络实体ID */
networkId: number;
/** 实体名称 */
entityName: string;
/** 拥有者ID */
ownerId: string;
/** 权限类型 */
authority: AuthorityType;
/** 初始组件数据 */
components: Array<{
type: string;
data: any;
}>;
/** 位置信息 */
position?: { x: number; y: number; z?: number };
};
}
/**
* 实体销毁消息
*/
export interface IEntityDestroyMessage extends INetworkMessage {
type: MessageType.ENTITY_DESTROY;
data: {
/** 网络实体ID */
networkId: number;
/** 销毁原因 */
reason?: string;
};
}
/**
* 加入房间消息
*/
export interface IJoinRoomMessage extends INetworkMessage {
type: MessageType.JOIN_ROOM;
data: {
/** 房间ID */
roomId: string;
/** 密码(如果需要) */
password?: string;
/** 玩家信息 */
playerInfo?: {
name: string;
avatar?: string;
customData?: Record<string, any>;
};
};
}
/**
* 离开房间消息
*/
export interface ILeaveRoomMessage extends INetworkMessage {
type: MessageType.LEAVE_ROOM;
data: {
/** 房间ID */
roomId: string;
/** 离开原因 */
reason?: string;
};
}
/**
* 房间状态消息
*/
export interface IRoomStateMessage extends INetworkMessage {
type: MessageType.ROOM_STATE;
data: {
/** 房间ID */
roomId: string;
/** 房间状态 */
state: string;
/** 玩家列表 */
players: Array<{
id: string;
name: string;
isHost: boolean;
customData?: Record<string, any>;
}>;
/** 房间设置 */
settings?: Record<string, any>;
};
}
/**
* 游戏事件消息
*/
export interface IGameEventMessage extends INetworkMessage {
type: MessageType.GAME_EVENT;
data: {
/** 事件类型 */
eventType: string;
/** 事件数据 */
eventData: any;
/** 目标客户端 */
target?: RpcTarget;
/** 事件优先级 */
priority?: number;
};
}
/**
* 错误消息
*/
export interface IErrorMessage extends INetworkMessage {
type: MessageType.ERROR;
data: {
/** 错误代码 */
code: string;
/** 错误消息 */
message: string;
/** 错误详情 */
details?: any;
/** 相关的消息ID */
relatedMessageId?: string;
};
}
/**
* 消息类型联合
*/
export type NetworkMessage =
| IConnectMessage
| IConnectResponseMessage
| IHeartbeatMessage
| ISyncVarMessage
| ISyncBatchMessage
| IRpcCallMessage
| IRpcResponseMessage
| IEntityCreateMessage
| IEntityDestroyMessage
| IJoinRoomMessage
| ILeaveRoomMessage
| IRoomStateMessage
| IGameEventMessage
| IErrorMessage;