ET服務端框架學習——消息相關組件

       這裏要先說明一下ET框架中的消息類型,可以參考這篇文章《ET框架---消息類型淺析》: 

      1、客戶端發送給服務器的消息 C2S
              1)不需要與其他服務器通信(普通消息) 
                       a、不需要返回結果(普通的普通消息) 
                       b、需要返回結果(普通的RPC消息) 
              2)需要與其他服務通信(Actor消息) 
                       a、不需要返回結果(普通的Actor消息) 
                       b、需要返回結果(Actor RPC消息) 
       2. 服務器發送給客戶端的消息 S2C  
              1)返回客戶端請求的消息(根據客戶端的請求消息類型發送對應的回覆類型) 
              2)主動發送的消息,比如幀同步消息。

       以上的屬於服務端與客戶端之間的消息類型,皆屬於OuterMessage。(外部消息)  
       3. 服務器與其他服務器對話的消息(屬於內部消息InnerMessage,且是Actor消息) 
              1)需要返回結果(Actor RPC消息) 
              2)不需要返回結果(普通的Actor消息

  • ActorMessageSenderComponent組件

       這個組件是用來發送普通actor消息的,actor消息其實就是服務器之前發送的消息。ET的框架體系中,每個客戶端都是和gate服務器相連接的,當需要和其他服務器通訊的時候,都是通過gate服務器轉發的。 裏面只有一個Get方法,返回ActorMessageSender對象,這是一個結構體,內部存放的是地址Adress和ActorId,如下圖:

如下圖:

這裏的ActorId其實就是客戶端網絡配置中的AppId做了一些處理獲取的唯一id,和AppId是相關聯的。

  • ActorLocationSenderComponent組件

       這個組件用於發送local actor消息,所謂的local actor消息就是指的通過Local Server服務器發送的消息。該組件內部會緩存一個ActorLocationSender對象的字典和一些對該字典的操作。

       ActorLocationSender對象和ActorMessageSender對象的區別還是挺大的。當我們知道了消息接收方的唯一Id(Entity.Id)後,就可以通過這個對象來發送消息,如果只是知道instanceId,則可以使用ActorMessageSender對象來發送消息。ActorMessageSender組件內部還維護了一個發送消息的緩存隊列Queue<ActorTask>ActorTask對象是一個結構體,如圖:

結構體,如圖:

IActorRequest接口和IActorLocationResponse接口是和消息相關的一對接口,表示的是需要返回的消息。

  • ActorMessageDispatherComponent組件 

     這個組件是用於actor消息的分發。ActorMessageDispatherComponent組件裏面有兩個字典,如下:

,如下:

 

      
 

 

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