首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

chatOfPomelo 遊戲服務端架構分析

     編輯:關於C++

專案結構

chatOfPomelo 是基於 Pomelo 框架的聊天室示例。服務端包含三類自定義服務:

  • gate:前端網關,客戶端首次連接入口,負責分配 connector。
  • connector:前端連接服務,維持客戶端 WebSocket 長連接,轉發後端協議。
  • chat:後端聊天邏輯服務,不直接面向客戶端,處理邏輯後經 connector 推送。

配置 servers.json

development/production 環境下均配置三類服務的 id、host、port、clientPort、frontend 標識。

核心模塊代碼解析

  1. gate/handler/gateHandler.js:唯一入口 queryEntry。驗證 uid,從應用獲取所有 connector 列表,返回第一個 connector 的 host 和 clientPort 給客戶端。(實際生產可做負載均衡)
  2. connector/handler/entryHandler.js:客戶端進入 connector 的 enter。構造 uid = username*rid,檢查重複登錄,綁定 session,設置 rid,通過 RPC 調用 chatRemote.add 將玩家加入頻道並獲取用戶列表返回。session 關閉時觸發 onUserLeave 通過 RPC 調用 chatRemote.kick 移除玩家。
  3. chat/remote/chatRemote.js:後端邏輯核心,使用 Pomelo 內建 channelService。
    • add(uid, sid, name, flag, cb):獲取/創建頻道,推送 onAdd 通知現有成員,將玩家加入頻道,返回成員列表。
    • get(name, flag):獲取頻道成員列表(去除 *rid 後綴)。
    • kick(uid, sid, name):玩家離開頻道,推送 onLeave 通知。
  4. chat/handler/chatHandler.js:處理 connector 轉發的客戶端消息 send。根據 msg.target 判斷廣播(channel.pushMessage)或私聊(channelService.pushMessageByUids)。

網絡拓撲

客戶端 → gate(負載均衡) → connector(長連接維持) ↔ chat(邏輯處理)。chat 不直接連客戶端,所有下行消息經 connector 中轉。支持多 connector、多 chat 水平擴展。

總結

展示了 Pomelo 典型的「前端網關+連接層+後端邏輯」分層架構,利用 RPC 與 Channel 實現服務間解耦與消息路由,適合即時通訊類遊戲服務端開發。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved