Pomelo杂记(二)

1、访问后端服务器handler
-------------------------------------

客户端也可以直接调用后端服务器的handler,但是内部实际上是先连接到前端服务器,在components/server.js中执行

app.sysrpc[routeRecord.serverType].msgRemote.forwardMessage

通过rpc调用后端服务器的forwardMessage方法(/game-server/node_modules/pomelo/lib/common/remote/backend/msgRemote.js),在forwardMessage方法中重新调用后端服务器的

server.handle方法以调用客户端的目标方法.

frontend服务器forward消息的地方在:
https://github.com/NetEase/pomelo/blob/master/lib/server/server.js#L178

backend服务器接收消息的地方在:
https://github.com/NetEase/pomelo/blob/master/lib/common/remote/backend/msgRemote.js#L20

-------------------------------------

2、rpc调用
-------------------------------------

pomelo 是一个多进程相互协作的环境,rpc服务,让frontend 能够调用backend 的方法

self.app.rpc.chat.chatRemote.add(session, uid, self.app.get('serverId'), rid, true, function(users){
        
    next(null, {
            
        users:users
        
    });
    
});

rpc调用传递的第一个参数session,主要用于计算出路由,以确定请求要发到哪台服务器,也就是说第一个参数只用来route,所以不一定需要传递session对象(可以是其他值),

路由设置app.route('chat', routeUtil.chat);参见routeUtil,此参数在remote里面是没有接收的。

-------------------------------------

3、广播channel

-------------------------------------

Channel是服务器端向客户端推送消息的通道。Channel可以看成一个玩家id的容器,通过channel接口,可以把玩家id加入到channel中成为当中的一个成员。之后向channel推送消

息,则该channel中所有的成员都会收到消息。Channel只适用于服务器进程本地,即在服务器进程A创建的channel和在服务器进程B创建的channel是两个不同的channel,相互不影

响。

chanelService保存自定义的频道名,每个频道里保存前端服务器的ID:sid和每个用户的ID:uid在groups,groups[sid]取得所有通过同一个前端服务器登陆的uid。

0.5版本后加入了globalChannel,它提供全局的channel服务,其默认实现是通过redis将相关信息存储,开发者可以根据自身需求开发其它实现;Pomelo原有的channelService只能在具体某个服务器中创建channel,这种channel只能存储该服务器的用户信息,而globalChannelService则可以创建全局的globalChannel,所有服务器的用户信息都可以通过globalChannel进行存储。

-------------------------------------

4、通信加密

-------------------------------------

目前,pomelo通讯数据时没有进行加密的,通信数据需自行加密,当然如果使用protobuf也等于加密了数据

-------------------------------------

5、async控制流

-------------------------------------

异步的机制决定,pomelo里面要涉及到工作流控制,一般使用async控制流,常见方法如下

1.parallel方法是并行执行一组异步函数,这些函数之间没有顺序上的差异,如果其中一个返回err,则最终的callback返回err 和每个函数返回值组成的数组。

2.series方法是顺序执行一组异步函数,每个函数必须在上个函数执行完才开始执行,如果其中一个返回err,则之后的函数不在执行,并且最终的callback会立刻并返回err.

3.waterfall方法和series一样都是顺序执行一组异步函数,不同的是每个函数执行完毕须把结果传递给下个函数,下个函数可能对上个函数的结果有依赖。

-------------------------------------

柚子显示您访问的商户网站可用的优惠券代码,优惠和返现机会。 有什么建议? 柚是一个扩展,安装在您的浏览器,并允许您节省您的购买金额和恢复您的订单(现金返还)的金额的百分比。 它是如何工作的? 当Pomelo扩展程序检测到您在合作伙伴商家网站上时闪烁。当您点击柚子图标优惠券代码时,会显示交易和返现机会。 不要错过兑换优惠券的机会!保存并在网上购物赚钱,而不改变你的习惯。 我该怎么办? 没有或几乎没有。柚子扩展在您的互联网浏览器中自动运行。只要下载柚子扩展。 当您在返现合作伙伴网站(例如:amazon.fr,ebay.fr,...)进行购买时,您的付款将自动记入您的帐户。 请务必通过扩展程序直接连接到您的帐户,以便我们为您指定销售。一旦登录,即使关闭浏览器或关闭计算机,会话仍保持活动状态。 如何付款 当您的柚子延期可用的信贷达到最低5欧元时,您可以通过贝宝或银行转账进行付款申请。柚子还为您提供部分或全部捐赠给慈善机构的可能性。 您的付款由柚子快速处理。 什么是柚子的捐助者和慈善计划? 当您提出付款申请时,柚子会让您有机会捐款给支持的协会。 柚子鼓励慷慨的手势,把你的捐款加倍到你选择的慈善机构。例如,你向癌症研究协会捐赠10欧元,柚子将支付总额20欧元!您通过电子邮件收到确认捐款押金。 没有义务,您选择是要捐款还是要求付款,柚子会以相同的速度处理捐款和付款请求。 支持语言:Français
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值