導航:首頁 > IDC知識 > pomelo伺服器

pomelo伺服器

發布時間:2021-03-09 21:59:56

1、網易的MobileServer框架怎麼樣?比起pomelo來如何

優點

1.官方文檔由簡入繁,邏輯清晰,內容豐富,社區活躍
2.官方示例代碼優秀,有適合入門的聊天室,也有復雜的MMORPG作為參考,基本滿足了中小型游戲的入門需求
3.架構清晰,易伸縮易擴展
4.效率尚可,可參照官方提供的的壓測數據
5.後台管理工具優秀,查看伺服器狀態,動態添加/停止伺服器等等
6.學習成本低,招個靠譜的C++伺服器現在是越來越難了,從頭培養個靠譜的nodejs要比C++要相對容易,尤其在二線城市
7.已有一些使用pomelo的產品上線,算是經過了市場/同行的初步檢驗

2、如何用pomelo實現自有網路協議

安裝nodejs。nodejs下載地址:https://nodejs.org/en/。下載完成後點擊安裝,一直默認點擊下一步即可,安裝比較簡單,這里不再一一展開。

檢查nodejs是否安裝完成。在命令行中輸入:node,點擊回車查看是否安裝完成,顯示結果如下圖即表示安裝成功。

安裝python和VC編譯器。Python:版本在2.5 - 3.0之間(官方的要求)
VC編譯器:包含在VS2010中。這兩個很簡單,大家自行安裝吧,這里不再贅述。

npm安裝pomelo。安裝完nodejs後,會自動安裝上npm,可以通過npm來安裝pomelo。但是國內npm可以使用cnpm來安裝,命令行:cnpm install pomelo -g

查看pomelo是否安裝完成。我們可以用命令行:pomelo -h 來查看pomelo是否安裝完成,結果如下圖所示即為安裝成功

創建項目pomelo init ProjectName。

進入到項目文件夾,運行npm-install.bat。
進入項目伺服器開啟項目,大工告成。

3、pomelo channelservice 什麼時候啟動

你好,這么說吧,其實最開始要讀pomelo框架無非是因為自己沒有讀過什麼node.js框架的源碼,不過後來就逐漸變成了想要知道pomelo框架是如何實現廣播的,貌似這也是游戲伺服器比較重要的功能吧。。。。

一開始會覺得這種廣播在分布式的環境下實現會比較的復雜。。但是當搞明白了pomelo的實現之後,發現它是採用了一種折中的方法實現廣播。。雖然沒有剛開始自己想的那麼牛逼,不過覺得也算是一種比較好的解決方案吧。。

那麼接下來就用pomelo給的chat這個例子來分析吧,來看登錄吧,首先會向gate伺服器發起連接:

function queryEntry(uid, callback) {
var route = 'gate.gateHandler.queryEntry';
pomelo.init({
host: window.location.hostname,
port: 3014,
log: true
}, function() {
pomelo.request(route, { //發起請求,用於獲取用於連接的connector伺服器的地址
uid: uid
}, function(data) {
pomelo.disconnect();
if(data.code === 500) {
showError(LOGIN_ERROR);
return;
}
callback(data.host, data.port);
});
});
};
這部分代碼主要要完成的目的就是與gate進行通信,gate會返回該客戶用於連接的connector伺服器的地址,我們來看看gate伺服器是怎麼生成這個地址的吧:

//next是一個函數,用於執行一些操作,將返回的數據發送回去
handler.queryEntry = function(msg, session, next) {
var uid = msg.uid;
if(!uid) {
next(null, {
code: 500
});
return;
}
// get all connectors
var connectors = this.app.getServersByType('connector'); //獲取素有connector伺服器的配置信息
if(!connectors || connectors.length === 0) {
next(null, { //第一個參error,第二個參數wie返回給客戶端的信息
code: 500
});
return;
}
// select connector
var res = dispatcher.dispatch(uid, connectors); //選取一個connector伺服器
next(null, {
code: 200,
host: res.host,
port: res.clientPort
});
};
var crc = require('crc');

mole.exports.dispatch = function(uid, connectors) {
var index = Math.abs(crc.crc32(uid)) % connectors.length;
return connectors[index];
};
到這里就應該知道gate伺服器是怎麼挑選connector伺服器的了吧。。。那麼在獲取了用於連接的connector之後,就應該建立與connector伺服器的連接,進行登錄了。。。代碼如下:

//query entry of connection
queryEntry(username, function(host, port) {
pomelo.init({
host: host, //這里是返回的用於連接的connector伺服器的host與port
port: port,
log: true
}, function() {
var route = "connector.entryHandler.enter"; //這里可以當做是進行登錄吧
pomelo.request(route, {
username: username,
rid: rid
}, function(data) {
if(data.error) {
showError(DUPLICATE_ERROR);
return;
}
setName();
setRoom();
showChat();
initUserList(data);
});
});
});
可以看到這里調用的是connector伺服器的handler的enter方法,然後傳過去的參數是username和rid(房間的id),那麼我們來看看這個connector伺服器的enter方法幹了些什麼事情吧:

handler.enter = function(msg, session, next) {
var self = this;
var rid = msg.rid;
var uid = msg.username + '*' + rid //用戶名字還要加上組名字
var sessionService = self.app.get('sessionService');

//plicate log in
if( !! sessionService.getByUid(uid)) { //表示有相同的用戶了
next(null, {
code: 500,
error: true
});
return;
}

session.bind(uid); //將這個session與uid綁定起來
session.set('rid', rid);
session.push('rid', function(err) {
if(err) {
console.error('set rid for session service failed! error is : %j', err.stack);
}
});
session.on('closed', onUserLeave.bind(null, self.app)); //設置closed事件的處理函數

//put user into channel
//這里session適用於挑選後台的chat伺服器的,這里還要講當前frontend伺服器的serverID傳送過去,因為後台要知道當前channel的用戶都在哪些frontend伺服器上面連接著
//這里挑選後台的chat伺服器的時候,用的是rid,所以可以保證同一個房間的人分到同一個chatserver

users:users //遠程伺服器返回的當前channel裡面的

4、pomelo-logger有什麼作用,怎麼使用

pomelo-logger是對log4js的一個簡單封裝,主要為pomelo的日誌服務,具體怎麼使用可以參考pomelo源碼。
主要就兩點封裝:
1日誌按伺服器分開, 否則打在一個文件里找bug挺難
2前面自動加了輸出日誌的文件名

5、如何評價網易開源的 Pomelo 游戲開源伺服器

?

6、如何用 pomelo 框架寫一個游戲後台

尋路,開發者會發現pomelo可以用如此少的代碼達到強大的擴展性和伸縮性pomelo 是由網易開發的基於node, 它是高性能、分布式的游戲伺服器框架,並且使用很簡單
8226, 包括了開發游戲的常用工具庫, 如人工智慧(ai), aoi等
8226;工具包, 包括管理控制台,很多人斷言未來的web時代是實時web應用的時代, 我們發現用pomelo開發高實時web應用也如此合適, 而且伸縮性比其它框架好, 也可作為高實時web應用框架 pomelo最適合的應用領域是網頁游戲, pomelo的核心, 與以往單進程的游戲框架不同.js開發的高性能、分布式游戲伺服器框架:

8226;框架、社交遊戲、移動游戲的服務端。當然還不僅僅是游戲。目前不將pomelo用於大型的MMO rpg游戲開發,尤其是3d游戲, 還是需要象bigworld這樣的商用引擎來支撐。

pomelo包括三部分;庫

7、請問網易的pomelo伺服器好用嗎?有沒有其他的伺服器幫忙推薦下~

pomelo 是由網易開發的基於node.js開發的高性能、分布式游戲伺服器框架, 也可作為高實時web應用框架 pomelo最適合的應用領域是網頁游戲、社交遊戲、移動游戲的服務端,開發者會發現pomelo可以用如此少的代碼達到強大的擴展性和伸縮性。當然還不僅僅是游戲,很多人斷言未來的web時代是實時web應用的時代, 我們發現用pomelo開發高實時web應用也如此合適, 而且伸縮性比其它框架好。目前不推薦將pomelo用於大型的MMO rpg游戲開發,尤其是3d游戲, 還是需要象bigworld這樣的商用引擎來支撐。

pomelo包括三部分:

•框架, pomelo的核心, 與以往單進程的游戲框架不同, 它是高性能、分布式的游戲伺服器框架,並且使用很簡單
•庫, 包括了開發游戲的常用工具庫, 如人工智慧(ai), 尋路, aoi等
•工具包, 包括管理控制台, 命令行工具, 壓力測試工具等
我感覺挺好用的 至於你能不能用習慣我就不知道了

8、請教一個關於Pomelo Robot實現的問題

你好
請問是什麼問題?
pomelo-robot pomelo-robot 是一個用來對pomelo游戲伺服器框架進行性能測試的工具

9、請問pomelo多伺服器如何配置

在pomelo中伺服器之間消息路由可以自己配置路由函數,你首先在不同機器上部署不同伺服器進程,然後在具體rpc調用的時候根據需求配置路由函數。

與pomelo伺服器相關的知識