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方法,最後清空集合。

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