本篇讲解下NetworkComponent组件,框架在初始化的时候,挂载的是NetOuterComponent组件,该组件继承自NetworkComponent组件,内部指定了使用了网络协议为TCP。
-
NetworkComponent
Dictionary<long, Session> sessions字典,存放的是使用到的和Channel相关的Session对象。 另外还有IMessagePacker对象和IMessageDispatcher对象。IMessagePacker类用于对消息协议的包装,是一个接口。IMessageDispatcher类是用于派发协议的接口。
Awake方法会根据NetworkProtocol参数的不同,创建相应的AServer对象。NetOuterComponent组件有接通Awake,Load和Update事件,会调用到这里的Awake方法,并且创建IMessagePacker对象和IMessageDispatcher对象。
后面有一些方法都是围绕sessions字典展开的,包括获取,删除(被删除的Session对象会执行Dispose方法),添加(添加的Session对象会执行Start方法)。
Update方法会执行Server的Update方法。
-
总结
Session是属于应用层 Channel是通信层(KCP,TCP,WEBSOCKET)。Channel断了新建一个,Session不变就还是同一个客户端。为了实现断线重连这种需求 一般都需要在通信层上封装一套Session机制 以保存应用的一些连接信息。它门一般都会把Socket功能拆成2部分( 一个是Server 负责创建管理socket 一个是Channel也叫Peer 负责数据在多个Socket中的传输)。
后面会先放一放ET,先去补一下unity的网络开发,然后再来理一下ET部分的网络,写个总结篇。还是太菜了。。(手动大哭)