Pomelo 新手计划(四)

前言

今天我们介绍一下Channel 广播机制和RPC 的使用。

Channel

对于一个游戏服务器,而言,把消息推送给玩家,这是一个很基础的功能,在pomelo 里面用Channel 进行消息的推送服务,要进行消息的推送,Channel提供了两种方式:

  • 匿名Channel
  • 具名Channel

匿名Channel

什么是匿名Channel?匿名Channel就是直接使用channelService进行消息推送,在api 中提供了两种方式

这种是指定用户Session 里面的绑定的UID(session.bind(uid);)推送到那个session uid 的方式有四个参数

  • route String type
  • msg Object type
  • uids Array Type
    [{uid: userId, sid: frontendServerId}] 主要数组里面每个对象的属性

cb - cb(err) 错误的回调 例子:

var uidArray = new Array();
uidObject.uid = "session uid";
uidObject.sid = "connector-server-1";
uidArray.push(uidObject);
channelService.pushMessageByUids('onMsg',{msg:msg},uidArray,function(err){
   if(err){
       console.log(err);
       return;
   }
});

第二种就是把消息广播到所有连接在frontend 服务器的客户端.

  • stype String type
    指定我们需要广播的frontend 类型,注意这里不是frontend id 而是类型,例如connector 如果你配了多台服务器,消息会广播到所有连接在这种类型frontend的客户端上。

  • route String type
    如 ‘onMsg’

  • msg Object type

  • opts Object type
    自0.4.x 的配置只有一个参数 opts.binded Boolean type
    true 根据session 的uid 进行广播,false 根据session的id 进行广播

  • cb
    channelService.broadcast('connector' ,'onMsg', msg, {binded: true}, function(err){
    if(err){
    console.log(err);
    }
    });

具名Channel

具名Channel 就是我们在pomelo 创建一个推送房间。用于维护需要长期订阅关系的业务,例如,聊天的频道,注意使用具名Channel 如果那个Channel不在使用,需要显式调用销毁接口。

例子:

 //创建Channel
var channelName = 'allPushChannel';
var channel = this.channelService.getChannel
//把用户添加到channel 里面
if(!!channel){
    channel.add(uid, sid);
}
 //根据Channel 名字推送消息
var channelName = 'allPushChannel';
var pushChannel = this.channelService.getChannel(channelName, false);

pushChannel.pushMessage('onMsg',{msg: msg}, function(err){
    if(err){
        console.log(err);
    }else{
        console.log('push ok');
    }
});

以上就是pomelo 有关推送的全部内容,用pomelo进行消息的推送就是这么简单!

RPC使用

从pomelo 框架图里面我们可以知道,pomelo 是一个多进程相互协作的环境。关于这方面的pomelo是如何实现的可以阅读官方的Pomelo Framework

这里不再对pomelo如何实现rpc 进行描述,针对原文档的一些不清晰的地方进行补充。

如何使用rpc 服务,让frontend 能够调用backend 的方法?

要实现这个目的很简单。
根据Pomelo 的相关阅读。首先在handler 同级目录下创建一个remote目录,创建一个backendRemote文件(具体可以参考分布式聊天的例子)

值得注意的是,我们调用远程方法的时候,第一个参数需要是Session值。

//远程服务端
backend.kick = function(uid, sid){

}

//调用远程服务的时候,我们要需要从app 获得rpc服务
var rpc = app.rpc;

//代理端的完整写法
rpc.frontend.kick = function(session, uid, sid){

}

以上就是pomelo 多进程相互协作的使用方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux下安装和使用Pomelo,你可以按照以下步骤进行操作: 1. 首先,你需要在Linux系统上安装Node.js。你可以通过包管理器来安装Node.js,具体的安装方法可以参考[这个链接](https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager#debian-and-ubuntu-based-linux-distributions) 。 2. 安装完成后,你可以使用npm来全局安装Pomelo命令行工具。你可以在终端中输入以下命令来安装Pomelo: ``` npm install -g pomelo ``` 这样,Pomelo的命令行工具就会被安装到你的系统中。 3. 安装完成后,你可以使用Pomelo命令行工具来创建和管理Pomelo项目。你可以在终端中输入以下命令来查看Pomelo的命令行工具使用方法: ``` pomelo --help ``` 这样,你就可以了解到如何创建和管理Pomelo项目了。如果你想要了解更多Pomelo的相关信息,你可以参考[这个链接](https://github.com/NetEase/pomelo/wiki/Home-in-Chinese) 。 总结起来,你需要先安装Node.js,然后使用npm来全局安装Pomelo命令行工具,最后你就可以使用Pomelo命令行工具来创建和管理Pomelo项目了。希望这些信息对你有帮助!如果你还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux下Pomelo环境配置](https://blog.csdn.net/xufeng0991/article/details/45850207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值