公司要給客戶開發即時通訊軟體,在網際網路上進行了一番比較選型,最終標明使用Openfire進行開發。在經曆了漫長痛苦的開發與調試過程後,目前已經上線進行試運作。
與原來相比,擴充與實作了以下新功能:組織機構、使用者群組(類似QQ群功能)、檔案離線上傳下載下傳、聊天截圖、使用者待辦事項動态提醒等。 以下是開發過程中的一些筆記回顧。
用戶端界面:

群聊天界面:
一。名詞解釋:
XMPP
Extensible Messaging and Presence Protocol,簡單的來講,它就是一個發送接收處理消息的協定,但是這個協定發送的消息,既不是二進制的東東也不是字元串,而是XML。正是因為使用了XML作為消息傳遞的中介,Extensible 才談的上,不是麼?
IM
Instant Messenger,及時通信軟體,就是大家使用的QQ、MSN Messenger和Gtalk等等。其中Gtalk 就是基于XMPP 協定的一個實作,其他的則不是。目前IM 幾乎作為每個上網者必然使用的工具,在國外的大型企業中有一些企業級的IM應用,但是其商業價值還沒完全發揮出來。設想既然XMPP 協定是一個公開的協定,那麼每個企業都可以利用它來開發适合本身企業工作,提高自身生産效率的IM;甚至,你還可以在網絡遊戲中內建這種通信軟體,不但讓你可以邊遊戲邊聊天,也可以開發出适合遊戲本身的IM 應用,比如說一些遊戲關鍵場景提醒功能,團隊語音交流等等都可以基于IM來實作。
Spark Smack 和 Openfire
開源界總是有許多有趣的東東,這三個合起來就是一個完整的XMPP IM 實作。包括伺服器端——Openfire,用戶端——Spark,XMPP 傳輸協定的實作——Smack(記住,XMPP是一個協定,協定是需要實作的,Smack起到的就是這樣的一個作用)。三者都是基于Java 語言的實作。
Spark 提供了用戶端一個基本的實作,并提出了一個很好的插件架構,這對于開發者來說不能不說是一個福音。我強烈建議基于插件方式來實作你新增加的功能,而不是去改它的源代碼,這樣有利于你項目架構,把原始項目的影響降到最低。
Openfire 是基于XMPP 協定的IM 的伺服器端的一個實作,雖然當兩個使用者連接配接後,可以通過點對點的方式來發送消息,但是使用者還是需要連接配接到伺服器來擷取一些連接配接資訊和通信資訊的,是以伺服器端是必須要實作的。Openfire 也提供了一些基本功能,但真的很基本的!慶幸的是,它也提供插件的擴充,像Spark 一樣,同樣強烈建議使用插件擴充的方式來增加新的功能,而不是修改人家的源代碼。
Smack 是一個XMPP 協定的Java 實作,提供一套可擴充的API,不過有些時候,你還是不得不使用自己定制發送的XML 檔案内容的方式來實作自己的功能。
二、openfire的安裝
1.首先到http://www.igniterealtime.org/projects/openfire/index.jsp下載下傳最新安裝包
*注意有包含JRE版本和不包含JRE版本,不含JRE版本需要 JRE 1.5.0及以上的支援
我們用的是3.6.4的版本。
2.安裝或解壓完畢,啟動bin目錄中的 openfire\bin\./openfire start
然後打開浏覽器http://IP位址:9090/進入step by step 安裝界面
第一步選擇語言 支援中文
第二步配置域名,管理端口号
第三步配置資料庫
可以選擇使用外部資料庫或自帶的HSQLDB,建議使用外部資料庫
OPENFIRE3.6.4支援的外部資料庫有
mysql
oracle
sqlserver
postresql
db2
選擇要使用的資料庫後,配置一下連接配接
*注意openfire預設沒有提供oracle的驅動,将你的oracle拷到openfire/lib目錄下即可
如果連接配接成功openfire會自動初始化資料庫,完成資料庫配置
*在resources\database下有相關資料庫的sql腳本
第四步使用者群組
openfire的使用者/組支援
資料庫
LDAP
Clearspace
第五步管理者密碼
設定管理者的郵箱及密碼
完成上述操作後openfire的安裝就完成了
再次打開http://IP位址:9090/ 顯示登入框,輸入剛才配置的管理者密碼進入
*預設的管理者使用者為admin
服務端停止指令 openfire\bin\./openfire stop
現在就可以用用戶端登入了 。
下一次我們來談下如何進行插件開發。