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調用的時候根據需求配置路由函數。