ET框架学习——消息系统之五

        上一篇文章简单学习了一下AChannel和对应的派生类。这里来学习和Channel对应的Server相关的类

        和Channel一样,Server也是对应一个基类AServer和派生类。并且派生类也是对应TCP,KCP和WebSocket三个。KCP和WebSocket都相对来说比较陌生。这里只看一下TServer相关的内容。

  • AServer

      内部定义的框架所使用的三种协议类型枚举。AServer是继承自Component的。

public enum NetworkProtocol
{
    KCP,
    TCP,
    WebSocket,
}

      内部定义了一下重要的抽象方法,比如获取和Server类型一致的Channel对象的方法。还有一个Action委托Action<AChannel> acceptCallback,和对应的事件。OnAccept方法用于执行委托。

  • TService

      TServer既可以做客户端,也可以做服务端。其内部有一个字典Dictionary<long, TChannel> idChannels,该字典内部存放的和TServer对应的Channel对象。另外还有一个HashSet<long> needStartSendChannel 集合,用于缓存待传输的Channel对象。在其构造方法中会指定基类中的Action委托和端口,地址等信息。创建完Socket后,开启监听。最后执行AcceptAsync方法

      AcceptAsync方法用于测试接收数据。方法内部会调用到创建TChannel部分,创建完成后会加入字典,然后将TChannel对象作为参数,执行基类方法OnAccept

     OnComplete方法会将成功操作的回调放到主线程来执行。这里是通过SocketAsyncEventArgsCompleted属性来调用的该方法。

      Update方法会遍历HashSet集合中的元素,然后获取到其中的Channel对象,执行StartSend方法,最后清空集合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章