feat(framework): core 最小集协议类型(envelope/login)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
import type { RouteName } from '../constants.ts';
|
||||
|
||||
/** 客户端→服务器 单层信封。来源 docs/protocol/01 §3.1。 */
|
||||
export interface OutboundEnvelope<T = unknown> {
|
||||
app: 'youle';
|
||||
route: RouteName | string; // 游戏内 route 为子游戏名
|
||||
rpc: string;
|
||||
data: T;
|
||||
}
|
||||
|
||||
/** 服务器→客户端 解包后的内层。来源 docs/protocol/01 §3.2。 */
|
||||
export interface InboundMessage<T = unknown> {
|
||||
route: string;
|
||||
rpc: string;
|
||||
data: T;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* player_login 请求/响应(最小集)。完整字段以 docs/protocol/01 §6、02、04 为准(spec §0.1)。
|
||||
* 用索引签名容纳本最小集未显式列出的协议字段,避免在此内联复制全部协议字段。
|
||||
*/
|
||||
export interface LoginRequestData {
|
||||
agentid: number | string;
|
||||
gameid: number | string;
|
||||
openid: string;
|
||||
nickname: string;
|
||||
avatar: string;
|
||||
sex: number;
|
||||
province: string;
|
||||
city: string;
|
||||
unionid: string | number;
|
||||
version: string;
|
||||
channelid: number | string;
|
||||
marketid: number | string;
|
||||
[extra: string]: unknown; // location/ip/machineid/telphone 等由 Send_login 注入,见 docs/protocol/01 §6
|
||||
}
|
||||
|
||||
/** 登录响应 A 组账号资产(核心字段)。完整见 docs/protocol/04。 */
|
||||
export interface LoginResponseData {
|
||||
state: number; // 0=成功
|
||||
playerid: number;
|
||||
[extra: string]: unknown; // bean/roomcard/charm/... 及 B 组房间恢复字段 roomcode/isbattle/deskinfo
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import type { OutboundEnvelope, InboundMessage } from '../../YouleNexus/assets/framework/core/types/envelope.ts';
|
||||
import type { LoginRequestData, LoginResponseData } from '../../YouleNexus/assets/framework/core/types/login.ts';
|
||||
|
||||
const out: OutboundEnvelope<LoginRequestData> = {
|
||||
app: 'youle', route: 'agent', rpc: 'player_login',
|
||||
data: { agentid: 1, gameid: 2, openid: 'o', nickname: 'n', avatar: 'a', sex: 0, province: '', city: '', unionid: 'u', version: '1', channelid: 0, marketid: 0 },
|
||||
};
|
||||
const inb: InboundMessage<LoginResponseData> = { route: 'agent', rpc: 'player_login', data: { state: 0, playerid: 9 } };
|
||||
void out; void inb;
|
||||
Reference in New Issue
Block a user