今天前辈跟自己分享了一个获取用户在线状态的新方法,这是他在阅读pomelo源码时发现的。这也激起了自己阅读源码的好奇心。每次听前辈说代码很有意思的时候,自己都会感觉,这才是热爱编程的人,自己还没有达到那个地步,还需要继续努力啊。
闲话少说,进入整体。在pomelo的源码里,有一个connectionService 这样一个服务。该服务时来源于前端服务器[即connector服务器],可以在进入游戏的时候获取到。这个服务需要加载connection 组件。组件在app中的名称是 :__connection__。所以获取的时候是这样获取的,global.app['components']['__connection__']['logined'].
logined 是当前服务器在线玩家的uid 对象数组。[{uid: uid,...},...]这样一种结构的数据。所以在获取玩家的在线状态,只需要获取到这个数组,循环判断一下是否包含所查询的玩家uid. 这个获取在线状态的方法只能写在connector服务器里,因为其他地方获取不到。可以将方法定义在connector的remote中。其他服务器rpc调用。
跟之前的获取玩家在线状态的区别,这个方法执行效率更快一些。不需要 像之前那样双层循环。一个是 O( n * n ),一个是O(n) 一下子就看出来了。
配张图吧 老写文字太单调了呵呵。还是美女养眼啊。。。
昨天花了血本,花了一万大洋买了一台Mac Pro ,这是自己一个梦想的实现,也是下一个梦想的开始,继续在程序员的道路上前向吧,不管有多艰辛,我相信自己总会感谢自己现在的努力的。Fighting!!!
待续。。。