今天前輩跟自己分享了一個(gè)獲取用戶(hù)在線(xiàn)狀態(tài)的新方法,這是他在閱讀pomelo源碼時(shí)發(fā)現(xiàn)的署辉。這也激起了自己閱讀源碼的好奇心。每次聽(tīng)前輩說(shuō)代碼很有意思的時(shí)候塔淤,自己都會(huì)感覺(jué)阱飘,這才是熱愛(ài)編程的人斥杜,自己還沒(méi)有達(dá)到那個(gè)地步,還需要繼續(xù)努力啊沥匈。
閑話(huà)少說(shuō)蔗喂,進(jìn)入整體。在pomelo的源碼里高帖,有一個(gè)connectionService 這樣一個(gè)服務(wù)缰儿。該服務(wù)時(shí)來(lái)源于前端服務(wù)器[即connector服務(wù)器],可以在進(jìn)入游戲的時(shí)候獲取到散址。這個(gè)服務(wù)需要加載connection 組件返弹。組件在app中的名稱(chēng)是 :__connection__锈玉。所以獲取的時(shí)候是這樣獲取的,global.app['components']['__connection__']['logined'].
logined 是當(dāng)前服務(wù)器在線(xiàn)玩家的uid 對(duì)象數(shù)組义起。[{uid: uid,...},...]這樣一種結(jié)構(gòu)的數(shù)據(jù)拉背。所以在獲取玩家的在線(xiàn)狀態(tài),只需要獲取到這個(gè)數(shù)組默终,循環(huán)判斷一下是否包含所查詢(xún)的玩家uid. 這個(gè)獲取在線(xiàn)狀態(tài)的方法只能寫(xiě)在connector服務(wù)器里椅棺,因?yàn)槠渌胤将@取不到∑氡危可以將方法定義在connector的remote中两疚。其他服務(wù)器rpc調(diào)用。
跟之前的獲取玩家在線(xiàn)狀態(tài)的區(qū)別含滴,這個(gè)方法執(zhí)行效率更快一些诱渤。不需要 像之前那樣雙層循環(huán)。一個(gè)是 O( n * n ),一個(gè)是O(n) 一下子就看出來(lái)了谈况。
配張圖吧 老寫(xiě)文字太單調(diào)了呵呵勺美。還是美女養(yǎng)眼啊。碑韵。赡茸。
昨天花了血本,花了一萬(wàn)大洋買(mǎi)了一臺(tái)Mac Pro 祝闻,這是自己一個(gè)夢(mèng)想的實(shí)現(xiàn)占卧,也是下一個(gè)夢(mèng)想的開(kāi)始,繼續(xù)在程序員的道路上前向吧联喘,不管有多艱辛华蜒,我相信自己總會(huì)感謝自己現(xiàn)在的努力的。Fighting;碓狻S讯唷!
待續(xù)堤框。域滥。。