您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

CIM2.1.0發(fā)布,即時通訊方案

2016-07-18 16:13:20   作者:   來源:開源中國社區(qū)   評論:0  點擊cti:


  CIM2.1.0發(fā)布了,基于apache mina的java即時通訊服務(wù)端。與android客戶端完美結(jié)合,同時支持其他語言(ios,c,Action Script,.net等)客戶端的即時通信。
  說明:
  此開源版本為基礎(chǔ)功能版本,只有消息推送的基礎(chǔ)功能!netty版本,和mina版本結(jié)構(gòu)和功能完全一致,大家可以選擇自己喜歡的或者合適的版本學(xué)習(xí)或者使用!
  前言:
  現(xiàn)在市面上有很多xmpp協(xié)議的即時通訊方案,openfire androidpn,等等。它們都是使用了apache mina開發(fā),但是這些東西基本都需要二次改造開發(fā)。而且改動還很大,我也看過這些東西的源碼,發(fā)現(xiàn)代碼結(jié)構(gòu)不太理想,耦合的情況太多,實在不好擴展。所謂XMPP協(xié)議。只不過是別人使用mina自定義了一個消息編碼解碼協(xié)議。通俗的講就是,xml形式消息的編碼與解碼,我們完全沒有必要在國外這套不成熟的openfire與xmpp上耗費過多的精力去研究,我們完全可以通過apache mina自定義自己的通訊協(xié)議,并可以為它使用自己的名字。我們不要盲目崇拜國外的有些東西,自己掌握原理,才是最重要的,各位切記~
  這套IM系統(tǒng)為我個人自主開發(fā)使用了apache mina,主要功能為服務(wù)端和客戶端,客戶端到客戶端的即時通信,可以支持包括文字圖片,語音等任何消息形式服務(wù)端使用的struts2+spring3和apache mina android端也使用的apache mina。這套IM系統(tǒng)結(jié)構(gòu)還是非常清晰合理的,非常容易擴展和改造,下面是android版本的demo的目的是只是一個演示,可以參照它的代碼,使用這套系統(tǒng)開發(fā)自己的東西,核心價值是一套高靈活性,相對標(biāo)準(zhǔn)化的即時通訊解決方案,即時聊天只是它的一種運用途徑!
  服務(wù)端集群配置方案
  服務(wù)端修改
  1.多臺服務(wù)器集群配置,首先需要重寫SessionManager接口(參考com.farsunset.ichat.cim.session.Cluster Session Manager.java),用戶登錄時,將賬號和服務(wù)器IP存入數(shù)據(jù)庫中,這樣就可以統(tǒng)計各臺服務(wù)器接受的連接數(shù)量。2.客戶端連接服務(wù)器時,服務(wù)端為客戶端動態(tài)分配服務(wù)器IP,每次分配較為空閑的服務(wù)器IP3.服務(wù)端接受消息后通過接收者賬號查詢出對應(yīng)的Iosession,和登錄的服務(wù)器IP,然后將消息信息傳往目標(biāo)服務(wù)器處理發(fā)送
  更新日志
  1.修改消息斷包時沒有正確處理,導(dǎo)致消息接收不到的問題
  2.修改調(diào)用CIM Push Manager.stop(),在網(wǎng)絡(luò)切換時會恢復(fù)連接的問題
  3.修改netty版客戶端斷開連接,服務(wù)端連接信息沒有更新的問題
  4.netty版本使用4.1.0,mina版本使用最新的2.0.13

專題