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调用的时候根据需求配置路由函数。