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