[docs][refactor]: 将旧 01~06 中文教程合并整理为 modules/frameworks 文件夹结构
- 删除 01~05 旧中文教程目录 - 将 03 核心功能教程拆分为各 framework 模块的子文档 - 06 工具脚本移入 modules/frameworks/编辑器工具/UI工具/ - 非框架内容合并进 rules/20-开发规则.md 与 rules/40-工作流清单.md - 更新所有交叉链接与文档关联表 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
121
modules/frameworks/网络系统.md
Normal file
121
modules/frameworks/网络系统.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# 网络系统
|
||||
|
||||
## 分类
|
||||
|
||||
- 核心框架
|
||||
|
||||
## 目的
|
||||
|
||||
提供 WebSocket 连接、protobuf 消息收发、消息 ID / route 映射和错误响应处理。
|
||||
|
||||
---
|
||||
|
||||
## 核心路径
|
||||
|
||||
- protobuf 源:`GoogleProtobufNetwork/`
|
||||
- 生成输出:`Assets/Game/GameHFScripte/CopyToHF/Network/`
|
||||
- WebSocket:`Assets/Game/GameHFScripte/GameFunction/WebSocket/`
|
||||
|
||||
---
|
||||
|
||||
## 核心类
|
||||
|
||||
| 类 | 职责 |
|
||||
|---|---|
|
||||
| `HFSeverManager` | 网络管理器单例 |
|
||||
| `WSSession` | WebSocket 会话 |
|
||||
| `HFM_Socket_WS` | WebSocket 底层连接 |
|
||||
| `HFWebSocket_Manager_AutoMsgMap` | 自动生成消息映射 |
|
||||
| `HFNetWorkMsgIdMap` | 网络消息 ID 映射 |
|
||||
| `MessagePage` | 数据包编解码 |
|
||||
|
||||
---
|
||||
|
||||
## C2S 发送链路
|
||||
|
||||
```text
|
||||
IMessage.Dispatch()
|
||||
-> HFSeverManager.Instance.SendMsg(message)
|
||||
-> HFSeverManager.OnAuto_OnGetProtocNo(message)
|
||||
-> HFSeverManager.OnAuto_OnGetRoute(Network_MsgId)
|
||||
-> m_Session.SendMessage(protoNo, route, PacketType.Data, Request, message)
|
||||
```
|
||||
|
||||
`IMessage.Dispatch()` 定义在 `Assets/Game/GameHFScripte/GameFunction/WebSocket/Extends/HFServer_Extend.cs`。
|
||||
|
||||
---
|
||||
|
||||
## WebSocket 连接流程
|
||||
|
||||
```text
|
||||
登录管理器.ConnectServer
|
||||
-> HFSeverManager.Connect(MainConnect, WebSocket, ip, port, token)
|
||||
-> WSSession.Connect
|
||||
-> HFM_Socket_WS.Connect
|
||||
-> Handshake -> HandshakeAck -> 连接成功回调
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## S2C 收包和派发
|
||||
|
||||
```text
|
||||
WSSession.ReceiveMessages(PacketType.Data)
|
||||
-> MessagePage.Decode(packet.Body)
|
||||
-> Response.MessageId / Push.Route -> Network_MsgId
|
||||
-> HFSeverManager.OnAuto_OnMergeFrom(msgid, body)
|
||||
-> protobuf Parser.ParseFrom
|
||||
-> 反射创建 HFEvent_STC_{MessageTypeName}
|
||||
-> 写入 Request / ErrorCode
|
||||
-> AbsHFEventArg<enHFSTCEvent>.Dispatch()
|
||||
-> HFEventManager.Instance.STCEvent.Dispatch(arg)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 自动生成映射
|
||||
|
||||
- `HFWebSocket_Manager_AutoMsgMap.cs`:提供 `OnAuto_OnGetProtocNo`、`OnAuto_OnGetRoute`、`OnAuto_OnMergeFrom`、`msrDicRouteToMsg`、S2C/C2S 类型字典。
|
||||
- `HFNetWorkMsgIdMap.cs`:为 protobuf partial class 标记 `[HFNetworkMsg(...)]`。
|
||||
|
||||
---
|
||||
|
||||
## 使用规则
|
||||
|
||||
- 新增协议先改 `.proto`、`msg.proto`、`route.txt`。
|
||||
- 不手动修改生成输出。
|
||||
- 不硬编码 route 或数字 msgId。
|
||||
- UI 监听 S2C 必须在 `OnClose` 移除。
|
||||
- 错误响应会触发 `HFEvent_ErrorCode`。
|
||||
|
||||
---
|
||||
|
||||
## 协议变更清单
|
||||
|
||||
1. 修改 `.proto` 和 `msg.proto`。
|
||||
2. 登记 msgId / route。
|
||||
3. 重新生成 C# 代码。
|
||||
4. 检查 `HFNetWorkMsgIdMap.cs` / `HFWebSocket_Manager_AutoMsgMap.cs`。
|
||||
5. 更新业务入口和监听。
|
||||
6. 验证。
|
||||
|
||||
---
|
||||
|
||||
## 相关模块
|
||||
|
||||
- [事件系统](事件系统/README.md)
|
||||
- [数据/配置框架](数据配置框架.md)
|
||||
|
||||
---
|
||||
|
||||
## 文档关联
|
||||
|
||||
> 当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。
|
||||
|
||||
| 文档 | 关联原因 |
|
||||
|---|---|
|
||||
| [modules/模块索引.md](../模块索引.md) | 模块索引是项目知识总入口 |
|
||||
| [modules/frameworks/事件系统/README.md](事件系统/README.md) | S2C 消息派发为 STC 事件 |
|
||||
| [modules/frameworks/数据配置框架.md](数据配置框架.md) | 配置表与网络消息可能联动 |
|
||||
| [rules/10-架构说明.md](../../rules/10-架构说明.md) | 架构说明定义总体分层和依赖方向 |
|
||||
| [rules/30-模块登记规则.md](../../rules/30-模块登记规则.md) | 模块登记规则定义分类和状态口径 |
|
||||
Reference in New Issue
Block a user