Files
UnityAI/modules/frameworks/网络系统.md
lms d31b49221e [docs][fix]: 补齐单文件模块状态字段与 MCP 维护 checklist
- 场景系统/数据配置框架/网络系统/Hotfix启动增加验证与当前状态
- 数据配置变更清单补充具体菜单/路径/命令
- 模块登记规则增加 README/使用指南/注意事项量化标准
- 模块文档模板明确 README 与使用指南分工
- MCP 使用规则维护要求改为 checklist

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 14:40:38 +08:00

3.7 KiB
Raw Permalink Blame History

网络系统

分类

  • 核心框架

目的

提供 WebSocket 连接、protobuf 消息收发、消息 ID / route 映射和错误响应处理。


核心路径

  • protobuf 源:GoogleProtobufNetwork/
  • 生成输出:Assets/Game/GameHFScripte/CopyToHF/Network/
  • WebSocketAssets/Game/GameHFScripte/GameFunction/WebSocket/

核心类

职责
HFSeverManager 网络管理器单例
WSSession WebSocket 会话
HFM_Socket_WS WebSocket 底层连接
HFWebSocket_Manager_AutoMsgMap 自动生成消息映射
HFNetWorkMsgIdMap 网络消息 ID 映射
MessagePage 数据包编解码

C2S 发送链路

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 连接流程

登录管理器.ConnectServer
  -> HFSeverManager.Connect(MainConnect, WebSocket, ip, port, token)
  -> WSSession.Connect
  -> HFM_Socket_WS.Connect
  -> Handshake -> HandshakeAck -> 连接成功回调

S2C 收包和派发

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_OnGetProtocNoOnAuto_OnGetRouteOnAuto_OnMergeFrommsrDicRouteToMsg、S2C/C2S 类型字典。
  • HFNetWorkMsgIdMap.cs:为 protobuf partial class 标记 [HFNetworkMsg(...)]

使用规则

  • 新增协议先改 .protomsg.protoroute.txt
  • 不手动修改生成输出。
  • 不硬编码 route 或数字 msgId。
  • UI 监听 S2C 必须在 OnClose 移除。
  • 错误响应会触发 HFEvent_ErrorCode

协议变更清单

  1. 修改 .protomsg.proto
  2. 登记 msgId / routeroute.txt 或对应生成配置)。
  3. 通过生成器重新生成 C# 代码到 Assets/Game/GameHFScripte/CopyToHF/Network/
  4. 检查 HFNetWorkMsgIdMap.cs / HFWebSocket_Manager_AutoMsgMap.cs 是否同步。
  5. 更新业务入口和监听。
  6. 编译 GameHF 并运行连接/收发测试。

验证

  • 构建 GameHF.csproj
  • 在支持服务器的运行环境中登录、收发 C2S/S2C 消息。
  • 确认 HFEvent_STC_* 正确派发并在 OnClose 时移除监听。
  • 验证错误码事件 HFEvent_ErrorCode 触发路径。

当前状态

  • 待验证

相关模块


文档关联

当本文档发生变更时,应同步检查以下关联文档,避免信息不一致。

文档 关联原因
modules/模块索引.md 模块索引是项目知识总入口
modules/frameworks/事件系统/README.md S2C 消息派发为 STC 事件
modules/frameworks/数据配置框架.md 配置表与网络消息可能联动
rules/10-架构说明.md 架构说明定义总体分层和依赖方向
rules/30-模块登记规则.md 模块登记规则定义分类和状态口径