亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

ESFramework Demo -- 動(dòng)態(tài)組及群聊Demo(附源

系統(tǒng) 2373 0

所謂“動(dòng)態(tài)組”,就是在服務(wù)器內(nèi)存中動(dòng)態(tài)創(chuàng)建的組,不需要序列化存儲(chǔ)到比如數(shù)據(jù)庫或磁盤中,更像是一個(gè)臨時(shí)的東西,需要的時(shí)候就創(chuàng)建一個(gè),然后加入多個(gè)成員進(jìn)行組內(nèi)溝通,當(dāng)不再使用的時(shí)候,就直接從內(nèi)存中銷毀了。在閱讀本文之前,請(qǐng)務(wù)必先掌握 ESFramework 開發(fā)手冊(cè)(05) -- 好友與組 一文中介紹的關(guān)于組關(guān)系的基礎(chǔ)知識(shí)以及相關(guān)API的用法。

本Demo主要演示以下功能:

(1)創(chuàng)建動(dòng)態(tài)組

(2)加入動(dòng)態(tài)組

(3)在組內(nèi)廣播消息。(群聊)

(4)退出動(dòng)態(tài)組

(5)銷毀動(dòng)態(tài)組

一.公共定義

對(duì)于一個(gè)C/S系統(tǒng)來說,客戶端和服務(wù)端必需在某些定義上達(dá)成一致,比如信息類型的定義、協(xié)議類的定義等。 DynamicGroupDemo.Core這個(gè)程序集就是我們這個(gè)demo用于公共定義的地方,它將被客戶端和服務(wù)端共同使用。

首先,我們要根據(jù)需求確定所需的自定義信息類型,我們用GroupInformationTypes靜態(tài)類來表示:

然后,根據(jù)不同的信息類型,定義對(duì)應(yīng)的信息協(xié)議類,像GroupContract、TextChatContract。

二.服務(wù)端

1.實(shí)現(xiàn)組管理器接口IGroupManager

既然是要實(shí)現(xiàn)動(dòng)態(tài)組的功能,那么服務(wù)端就必須實(shí)現(xiàn)IGroupManager接口,Demo里面定義了DynamicGroupManager類從IGroupManager接口繼承。

DynamicGroupManager類除了實(shí)現(xiàn)IGroupManager接口的方法以外,另外還實(shí)現(xiàn)了創(chuàng)建組、加入組、退出組和刪除組的方法。

為了框架能夠使用我們自定義的組管理器DynamicGroupManager,我們必須在服務(wù)端引擎初始化之前,進(jìn)行相關(guān)設(shè)置:

客戶端想要進(jìn)行動(dòng)態(tài)組的操作,必須通過自定義消息把指令發(fā)送到服務(wù)端,所以服務(wù)端還必須實(shí)現(xiàn)ICustomizeHandler接口,Demo里面定義了CustomizeHandler類。

2.實(shí)現(xiàn)自定義處理器接口ICustomizeHandler

服務(wù)端自定義處理器處理了創(chuàng)建組、加入組、退出組、銷毀組等請(qǐng)求,并且當(dāng)有人加入/退出組時(shí),通知其他組成員。由于CustomizeHandler在處理這些請(qǐng)求時(shí)用到了組管理器,所以上面的代碼,將組管理器的引用作為構(gòu)造參數(shù)傳遞給自定義信息處理器。

另外,群聊消息不需要被自定義處理器處理,它將直接由框架提供的廣播機(jī)制進(jìn)行自動(dòng)轉(zhuǎn)發(fā)。

三.客戶端

1.封裝工具類GroupTools

首先,我們將與組操作相關(guān)的動(dòng)(如創(chuàng)建組、加入組等)作封裝成一個(gè)類GroupTools,后面直接使用GroupTools就好了。封裝成GroupTools的好處是,在以后我們正式的項(xiàng)目中,可以直接將其拷貝過去做適當(dāng)?shù)男薷木涂梢杂糜谖覀冏约旱捻?xiàng)目了。

創(chuàng)建組(CreateGroup)的時(shí)候,調(diào)用RapidPassiveEngine的CustomizeOutter的Send方法發(fā)送GroupInformationTypes.CreateGroup類型的自定義信息給服務(wù)端即可 。

加入組(JoinGroup)的時(shí)候,調(diào)用RapidPassiveEngine的CustomizeOutter的Query方法消息給服務(wù)端,等待服務(wù)端返回加入是否成功的結(jié)果。

除了CreateGroup、JoinGroup外,GroupTools還實(shí)現(xiàn)了QuitGroup和DestroyGroup方法。

2.UI與Demo邏輯

用戶登錄成功以后,進(jìn)入組選擇的界面??梢宰约簞?chuàng)建一個(gè)組(默認(rèn)組名和用戶名一致),也可以加入已經(jīng)存在的組(如果組存在,則加入成功;如果組不存在,則加入失?。?。

加入組或創(chuàng)建組成功后,就會(huì)進(jìn)入到群聊的界面,可以開始群聊:

ESFramework Demo -- 動(dòng)態(tài)組及群聊Demo(附源碼)

群聊消息直接通過框架提供的IGroupOutter的Broadcast方法進(jìn)行廣播發(fā)送,客戶端通過預(yù)定IGroupOutter的BroadcastReceived事件來處理接收到的群聊消息。

客戶端通過IGroupOutter的GroupmateConnected和GroupmateOffline事件,來得到組友的上下線通知。

要注意的是,我們?cè)赿emo中還處理了以下幾種情況:

(1)成員加入組或組成員上線的時(shí)候,客戶端會(huì)將其顯示在組成員列表中。

(2)如果組成員掉線或退出組,服務(wù)端自動(dòng)將其從組中移除,客戶端則將其從組成員列表中移除。

(3)如果自己掉線重連成功后,會(huì)重新加入之前的組。

四.源碼下載

ESFramework.Demos.DynamicGroup 源碼

閱讀 更多ESFramework開發(fā)手冊(cè)系列文章

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

關(guān)于ESFramework的任何問題,歡迎聯(lián)系我們:

電話:027-87638960

Q Q:372841921


ESFramework Demo -- 動(dòng)態(tài)組及群聊Demo(附源碼)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲精品成人久久久影院 | 国产二区精品视频 | 一级毛片视频 | 色狠狠色综合吹潮 | 日韩a一级欧美一级 | 国产亚洲美女 | 全免费a级毛片免费看视频免 | 亚洲久久在线观看 | 国产日韩欧美精品一区 | 中文字幕影院 | 色成网| 成人国产综合 | 日本精品高清一区二区不卡 | 四虎澳门永久8848在线影院 | 久久综合视频网 | 日韩成人免费 | 久草免费看| 天天草人人草 | 久久国产片| 天天做天天爱天天综合网 | 久久精品国产乱子伦多人 | 亚洲手机中文字幕 | 免费爱爱的视频太爽了 | 青草青青在线视频 | 男人资源网站 | 五月综合在线 | 97在线免费视频观看 | 草草免费视频 | 高清免费毛片 | 国产午夜久久精品 | 国内精品久久久久久影院8f | 日本xoxo在线观看免费 | 国产精品综合网 | 97影院理论午夜论不卡 | 日b视频免费看 | 一级日本特黄毛片视频 | 九九干| 色综合欧美亚洲另类久久 | 亚洲精品一区二区三区四区手机版 | 四虎精品视频 | 欧美日韩在线视频播放 |