Unity学习_网络消息处理

时间:2024-04-12 12:26:40

记一下整体流程。


NetworkClient用在客户端收发消息 TcpSocketListener在服务端收发
PackageHandler是处理封包和协议之间的转换。【网络上的数据<–>协议结构】
MessageDistributer 主要用在服务端,收到客户端众多消息?分配到服务端各个模块
MessageDispatch和分发器组合。消息分发器只管分发,不管啥消息。这个处理消息。


客户端:连接,创建消息,发送–发送过程:把信息放入发送队列 ->等update处理消息
Unity学习_网络消息处理

服务端

Init
建立连接,同时装载处理方法->处理方法里新建连接,并装载处理数据接收的回调方法—|> 回调方法里调用封包处理器PackageHandler来接收数据流->解析数据包->让分发器MessageDistributer接收数据 : 信息进入信息队列,并宣布事件发生。threadEvent.Set();
Unity学习_网络消息处理

Start
Program->开启GameServer->开启NetService->开启监听!启动MessageDistributer->线程池装载消息处理方法MessageDistribute–|> (执行分发的)处理方法在分发器运行时,把messageQueue里的package出队,处理其中信息->信息协议的message,根据收到的是请求或响应,执行MessageDispatch的方法分配消息给MessageDistributer–根据message在协议里的属性,执行MessageDistributer的RaiseEvent->根据类里字典messageHandlers已经订阅的对应类型键值里的处理器,发起事件,让对应处理器执行。

在监听之后同时跑。在启动的Service的里面用分发器的订阅方法,订阅此Service的响应方法【作为处理器】。在分发器里订阅方法里->把处理器加到分发器的委托字典里。
Unity学习_网络消息处理
每天都好痛苦~~不得不无病呻吟!
嗔痴半抹贪难断,黑雾囚心悸难安。
待到明日无明日,灵宁魄静越西山。