重构network库(mvp版本)搭建基础设施和核心接口
定义ITransport/ISerializer/INetworkMessage接口 NetworkIdentity组件 基础事件定义
This commit is contained in:
283
packages/network-shared/src/protocols/MessageTypes.ts
Normal file
283
packages/network-shared/src/protocols/MessageTypes.ts
Normal 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;
|
||||
Reference in New Issue
Block a user