在項(xiàng)目場景中有一個(gè)移動(dòng)門戶的APP,,除了提供門戶功能外,還有用戶之間能夠聊天交流的需求,。這個(gè)應(yīng)用在整體架構(gòu)中的定位可以理解為類似支付寶的一個(gè)APP,,提供各種微應(yīng)用的入口為主,聊天功能為輔,。聊天應(yīng)用的核心IM服務(wù),,如果團(tuán)隊(duì)精力和技術(shù)棧積累足夠的話,自研當(dāng)然是最好的方案,。但是我們這個(gè)項(xiàng)目比較急,,所以選擇使用第三方或者開源的IM,。 一.IM選型: (1)開源IM a)野火IM
b)StarTalk
(2)商業(yè)IM---社區(qū)版(窮哭了.....)
首先在開源IM和商業(yè)IM之間進(jìn)行選擇,。開源IM雖然可以自己進(jìn)行二次開發(fā),并且性能按照官方說明來看也很不錯(cuò),,但是實(shí)際上有以下幾個(gè)問題:1.項(xiàng)目更新緩慢或停更,,開源遺留下的問題難以解決。2.需要自己進(jìn)行運(yùn)維部署,,增加工作量,。3.從官方說明可以看出開源只是一些基礎(chǔ)的功能,更強(qiáng)大的功能實(shí)際上還是需要付費(fèi)的,。而商業(yè)IM好像沒有用錢解決不了的問題,,雖然我們沒有錢........在上面這些社區(qū)版的商業(yè)IM中,除了最重要的沒有用戶數(shù)限制這個(gè)制勝優(yōu)勢(shì),,極光IM還有其他幾個(gè)優(yōu)勢(shì):API限制比較寬松,、文檔可讀性強(qiáng)、歷史聊天記錄存儲(chǔ)久,,而且極光IM和極光推送是同一個(gè)團(tuán)隊(duì)開發(fā)的,,說是可以平滑的集成起來,簡直是沒錢首選,。 二.架構(gòu)設(shè)計(jì): 從上面簡易的架構(gòu)圖可以看出來如何通過集成商業(yè)IM來實(shí)現(xiàn)一個(gè)簡單的聊天應(yīng)用,。因?yàn)镮M本質(zhì)就是個(gè)沒有業(yè)務(wù)場景的、功能完整的及時(shí)聊天服務(wù)端,,所以提供了完整的聊天應(yīng)用所需要的服務(wù)接口,。我們只需要在這之上補(bǔ)充業(yè)務(wù)數(shù)據(jù)相關(guān)的接口就好了。 (1)APP服務(wù)端:用戶信息存儲(chǔ),,群信息存儲(chǔ),,提供用戶注冊(cè)和登錄接口,,提供業(yè)務(wù)數(shù)據(jù)。 (2)IM服務(wù):及時(shí)聊天服務(wù)(用戶消息,,群消息),,會(huì)話列表,,推送微應(yīng)用消息,。 (3)推送服務(wù):推送是通過設(shè)備號(hào)進(jìn)行消息推送的,和IM的用戶推送不同,,可以用來推送需要廣播的應(yīng)用系統(tǒng)消息,。 如何保證系統(tǒng)消息推送的及時(shí)性呢? 由于推送服務(wù)的送達(dá)率和及時(shí)性都不太好,,我是推送和IM同時(shí)推送系統(tǒng)消息的,,IM的及時(shí)性比較好,而推送服務(wù)可以保證用戶登出的時(shí)候也可以收取到消息,,不過這樣就需要移動(dòng)端進(jìn)行消息去重,。 |
|