游戏中聊天推送消息

作者: 抓不住的风 | 来源:发表于2014-11-05 20:15 被阅读366次

今天一下午,都在解决自己之前的bug,聊天推送消息推送不出去。

首先自己有一个误区,以为所有的玩家都是从同一个前端服务器进入游戏的;其次,自己没有真正理解pomelo推送消息的机制。造成了自己多次修改聊天系统。

先来说说前端服务器吧,玩家在进入游戏的时候,游戏服务器会自动分配一个前端的服务器,即connector 服务器,在配置文件中,肯定会有多个connector服务器的。所以玩家在进入房间的时候,channel.add( uid, sid );这里的sid 不会是一样的。

然后是,在推送消息的时候,如果是全频[所有的频道即所有的房间]推送消息的话,最好使用channel.pushMessage('onGlobalChat', msg); 如果是针对性的推送消息的话,则最好使用channelService.pushMessageByUids(method, msg, uids, opt,cb) 方法。

pushMessage方法使用方便,不需要获取角色的信息,直接就可以推送。

pushMessageByUids 方法,需要获取到接收玩家的uid [我这里是玩家的账户ID],

在这里还需要知道一个变量,channel.groups .这个变量保存着所有前端服务器里的所有在线玩家的uid.   groups结构如下:

{'connector-server-1' : [1,2,3,4], 'connector-server-2' : [5,6,7,8],,,,,}

推送消息的对象可能不在同一个前端服务器。

uid 的结构是 [ {uid : 1, sid : 'connector-server-1'}, {uid : 2, sid :'connector-server-2'},,,,,]

for( var i = 0; i < sendTarget.length; i++)

 { 

          for( var key in groups ){ for(var j = 0; j < groups[key].length; j++)

         { 

              if( sendTarget[i]['uid'] == groups[key][j]){ 

                sendTarget[i]['sid'] = key; } 

              } 

         } 

}

加入你已经获取到所有接收消息玩家的 uid 数组: sendTarget

sendTarget结构: [ { uid  : 1 },{ uid : 2 },,,,]

上面的过程就是将sid 加到sendTarget对象上。

这样才是完整的推送消息的过程。

今天就写到这里,继续阅读源码。。。

待续。。。

相关文章

  • 游戏中聊天推送消息

    今天一下午,都在解决自己之前的bug,聊天推送消息推送不出去。 首先自己有一个误区,以为所有的玩家都是从同一个前端...

  • 消息系统设计

    消息推送和聊天功能是移动时代的重要功能,广泛存在于各种业务中 一、特性 消息推送(单播、组播、广播); 聊天(聊天...

  • 【socket】- 长连接

    简介 很多时候项目需要及时获取消息或者推送消息,比如聊天,消息通知等等。当然市场上已经有很多成熟的聊天,推送产品。...

  • Android厂商推送冲突了。。。

    关于厂商推送 推送已经成为当下大部分App的必备功能了,相信大家每天都会收到新闻、聊天消息、普通App的活动等消息...

  • 消息推送

    推送通知的呈现效果总结 推送通知有5种不同的呈现效果1、在屏幕顶部显示一块横幅(显示具体内容)2、在屏幕中间弹出一...

  • 消息推送

    1、.简述一下消息推送的流程 2、如果不依赖APNS,如何在App进入后台时保证能够接收到远程消息?

  • 消息推送

    推送概念? APNs:Apple Push Notification Service,远程通知只能APNs服务器发...

  • 消息推送

    本地推送 @implementation AppDelegate 远程推送http://blog.csdn.net...

  • 消息推送

  • 消息推送

    http://blog.csdn.net/showhilllee/article/details/8631734

网友评论

  • a74e118df602:玩家的服务器Id 保存在channel中, channel.getMember(uid) ; {sid :'connector-server-1',uid : 20}. 私聊的时候 就可以根据角色的uid, 调用channelService.pushMessageByUid()方法,推送消息给目标角色了.

本文标题:游戏中聊天推送消息

本文链接:https://www.haomeiwen.com/subject/tmlbtttx.html