Cocos creator(JavaScript)+pomelo簡單測試

簡介

Pomelo:一個快速、可擴展、Node.js分佈式遊戲服務器框架。
本文講述如何實現一個簡易的分佈式聊天應用。爲了簡單化,我們將直接從gitee(碼雲)上獲取對應的源碼,或者先使用pomelo init,獲得一個初始的項目目錄,然後參照gitee(碼雲)上的源碼,建立相應的目錄,在默認的位置填充相應的源碼。

服務端

源碼結構介紹

game-server文件夾
game-server目錄放的是所有遊戲服務器的邏輯,以文件game-server/app.js作爲入口,運行遊戲的所有邏輯和功能。

servers文件下有三個目錄,分別是 chat、connector、gate。在 pomelo中,使用路徑來區分服務器類型,因此三個目錄代表了三種不同類型的服務器。每一個目錄下面可以定義handlerremote來決定這個服務器的行爲。不瞭解Pomelo中的術語,不分別解釋,可查看學習

  • gate服務器: 在一般情況下用戶量一臺機器就可以支撐,但用戶量多了就得擴充服務器,gate服務器的作用就相當於前端負載均衡服務器;邏輯代碼在gateHandler.js中,它接受客戶端向gate服務器發出查詢connector的請求,返回給客戶端一個可以連接的connector的服務器(ip,port)。分配策略是根據客戶端的某一個key做hash得到connector的id,這樣就可以實現各個connector服務器的負載均衡;
  • connector服務器: 邏輯代碼在entryHandler.js中,它主要完成接受客戶端的請求,路由客戶端的請求到chat服務器,維護與客戶端的連接; connector服務器會同時擁有clientPort和port,其中clientPort用來監聽客戶端的連接,port端口用來給後端提供服務;
  • chat服務器: handler和remote決定了服務器的行爲。handler中處理用戶的send請求,而remote是當有用戶加入或退出時,由connector來發起遠程調用時調用的。由於在remote裏涉及到用戶的加入和退出,所以會有對channel的操作。

game-server/config: 遊戲服務器所用到的配置文件存放的位置,配置信息使用JSON格式,包含有日誌,master服務器和其他服務器的配置信息。除了這個pomelo所需的配置信息外,一般情況下,也將遊戲邏輯所需要的配置信息放到這個目錄下,例如數據庫的配置信息,地圖信息等。

game-server/logs: 存放遊戲服務器產生的所有的日誌信息。

web-server
web服務器,如果你是個H5遊戲,這裏就是Web客戶端,如果是IOS、Andriod客戶端,這目錄就沒什麼用。
shared
公共代碼存放處,這裏要以放一些共用代碼

安裝Pomelo

Windows下需要的環境支持

本文提供下載地址: node.jsVS2010Python,若以上地址失效可自行到百度查找下載。

1. NodeJS(本文使用V12.15.0,最新版本可能報錯)

windows下默認安裝.msi後綴的包,檢驗是否安裝好cmd下,輸入node -v,顯示版本號說明安裝成功。

2. C++編譯環境(直接安裝VS2010)

不想裝vs2010這類佔10G硬盤空間的東西,直接npm install --global --production windows-build-tools,需要大約一共2G左右

3. Python(建議使用2.7.3, 2.5 < 版本 < 3)

windows下默認安裝.msi後綴的包,檢驗是否安裝好cmd下,輸入python --version,顯示版本號說明安裝成功(若安裝報錯可查看處理)。

安裝Pomelo

1.npm安裝pomelo: 安裝完nodejs後,會自動安裝上npm,可以通過npm來安裝pomelo。但是國內npm可以使用cnpm來安裝,命令行:npm install pomelo -g;
2.通過下載源代碼的方式安裝: $ git clone https://github.com/NetEase/pomelo.git
$ cd pomelo;
$ npm install -g;
3.npm install 無響應:
可參考:npm install慢/無響應解決方案

查看pomelo是否安裝完成: 可用命令行:pomelo -h 來查看pomelo是否安裝完成。

創建項目(可省略 使用下載的項目)

  1. 新建一個項目目錄 ProjectName;
  2. 打開cmd, 使用cd ProjectName 進入該目錄 執行 pomelo init;
  3. 運行生成的文件npm-install.bat。 (其它平臺執行npm-install.sh)

運行項目

啓動遊戲服務器方法:

$ cd game-server
$ pomelo start

在這裏插入圖片描述

報錯解決方法

若執行後,出現如下 錯誤提示:

[2017-11-23 11:54:42.226] [ERROR] console - Option path is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option close timeout is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option heartbeats is not valid. Please refer to the README.
[2017-11-23 11:54:42.226] [ERROR] console - Option log level is not valid. Please refer to the README.

問題原因: 新版的socket.io用法不正確的導致的,官方早已修復,就是沒有publish到npm包中;
解決方式: 把node_modules目錄下的pomelo中sioconnector.js(…/game-server/node_modules/pomelo/lib/connectors/sioconnector.js)替換爲 gitee(碼雲)地址下載github地址下載

啓動web服務器方法:

$ cd web-server
$ node app.js

在這裏插入圖片描述

示例下載

https://gitee.com/ls_qq2670813470/chatofpomelo_websocket

客戶端

本文提供了兩個版本,分別是
https://gitee.com/ls_qq2670813470/ccc_pomelo_chat_client_A
在這裏插入圖片描述
https://gitee.com/ls_qq2670813470/ccc_pomelo_chat_client_B
在這裏插入圖片描述
兩個版本都是在一個基礎上修改。

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