網關服代理

一、功能介紹

玩家在遊戲期間需要進行通信的服務器有:登錄服、廣場服、遊戲服(不考慮網站)。玩家和服務器之間通信是通過網關服轉發。連接的方式是網關服主動和登錄服、廣場服、遊戲服進行連接,登錄服、廣場服、遊戲服是用網關服代理模塊負責接收網關服連接,並進行數據接收和發送。

 

二、類圖

2.1 調用網關代理客戶端對象

  • 創建網絡監聽,用於監聽網關服連接
  • 調用網關服代理的對象需要繼承IServerProxySink,OnClientAccpet()用於創建客戶端連接對象並返回對象指針。
  • 負責客戶端連接對象創建和消耗

2.2 GatewayProxyServer

  • 接收網關服連接和校驗(網關服連接成功之後會發一個校驗碼)
  • 校驗成功之後創建GatewayServerCenter對象用於負責連接成功的網關服消息
  • 網關服可以有多個一個網關服對應一個GatewayServerCenter對象

2.3 GatewayServerCenter

  • 負責與某一個網關服消息交互
  • 當玩家第一次發送消息給服務器(登錄服、廣場服、遊戲服)需要先發送登錄消息
  • 收到玩家發送的登錄消息,創建ServerConnectionProxy對象並調用OnClientAccpet()獲取客戶端連接對象,將對象指針賦值給ServerConnectionProxy::m_pHandler。

2.4 ServerConnectionProxy

  • 對應一個客戶端連接對象,記錄客戶端連接對象的IP、端口等信息
  • 負責客戶端連接對象消息發送
  • 玩家發送消息統計和輸出(用於測試)

2.5 客戶端連接對象

  • 由調用網關代理客戶端對象中的ServerConnectionProxy()創建。
  • 負責不同服務器消息邏輯處理

 

三、使用方法

3.1 需要調用的服務器

是有和玩家進行通信的服務器才需要網關代理分別爲:登錄服、廣場服、遊戲服

3.2 各服務器調用流程

從下圖服務器框架圖中可以看出,網關服連接的服務器有:登錄服、廣場服、遊戲服、中心服。中心服沒有和玩家進行通信,不需要網關服代理。遊戲服和登陸服只接受網關服連接只有一個監聽端口,它們的調用網關代理客戶端對象就是主服務器對象(LoginServerCenter 和 CGlobalServer)。廣場服監聽端口有兩個一個監聽網關服連接另一個是監聽遊戲服連接,廣場服調用網關服客戶端代理對象是CUserClientServer。

3.3 登錄服網關代理簡化類圖

3.4 遊戲服網關代理簡化類圖

 

3.5 廣場服網關代理簡化類圖

 

3.6 接口定義

 

 

 

 

 

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