周云飛 劉立明
摘要: 該文介紹一種基于開(kāi)源軟件Openfire、SparkWeb 二次開(kāi)發(fā)的公司內(nèi)部消息平臺(tái)的解決方案,并以新興即時(shí)通項(xiàng)目為例說(shuō)明實(shí)現(xiàn)消息平臺(tái)的開(kāi)發(fā)過(guò)程和應(yīng)用效果。
關(guān)鍵詞: Openfire;SparkWeb;即時(shí)通訊
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)03-0121-01
Using Openfire and Sparkweb to Build IM Platform
ZHOU Yun-fei, LIU Li-ming
(XinXing Ductile Iron Pipes Co.,Ltd., Wu'an 056300 ,China)
Abstract:This paper introduce a solution of internal instant Messaging system base on further-development of Openfire and Sparkweb. Base on the Xinxing IM real-time communication platform,it lllustrates the application development process and the practice effect.
Key words:Openfire; SparkWeb; Instant Messaging
即時(shí)通訊功能是企業(yè)應(yīng)用中的一項(xiàng)重要需求,如員工間的即時(shí)消息傳遞、企業(yè)信息系統(tǒng)向員工發(fā)送通知消息等。即時(shí)通訊功能主要通過(guò)提高溝通效率的途徑提高員工的工作效率。不少企業(yè)使用公共的即時(shí)消息平臺(tái)(如QQ等)來(lái)進(jìn)行即時(shí)通訊。使用通用平臺(tái)的好處是減少企業(yè)的軟硬件投資,方便與公司外客戶聯(lián)系等。缺點(diǎn)是需要客戶端連入Internet,而且因包含有很多與工作無(wú)關(guān)信息,存在被濫用的可能;易出現(xiàn)信息安全問(wèn)題;不能與公司信息系統(tǒng)對(duì)接等。如果公共即時(shí)消息平臺(tái)的缺點(diǎn)是企業(yè)希望避免的,就有必要部署內(nèi)部即時(shí)通訊平臺(tái)。
1 系統(tǒng)實(shí)現(xiàn)技術(shù)思路
在企業(yè)內(nèi)部實(shí)現(xiàn)自己的即時(shí)消息平臺(tái),可以考慮基于Openfire、Sparkweb(或者Spark)進(jìn)行二次開(kāi)發(fā)。如果要求不高,其默認(rèn)的配置和插件就能滿足要求。當(dāng)然,對(duì)于企業(yè)一般多會(huì)有特殊的要求,如在內(nèi)部協(xié)同辦公平臺(tái)上有新郵件時(shí)給用戶發(fā)提醒消息等。
Openfire、Sparkweb是XMPP協(xié)議的實(shí)現(xiàn)。XMPP是一種基于標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集XML的協(xié)議,具有很強(qiáng)的可擴(kuò)展性。XMPP的技術(shù)規(guī)格已被定義在RFC 3920及RFC 3921。Openfire、Sparkweb都是開(kāi)源的,可以方便地在其之上通過(guò)二次開(kāi)發(fā)獲得符合要求的系統(tǒng)。
2 相關(guān)軟件及二次開(kāi)發(fā)介紹
1)Openfire
Openfire 采用Java開(kāi)發(fā),是開(kāi)源的實(shí)時(shí)協(xié)作(RTC)服務(wù)器,基于XMPP(Jabber)協(xié)議。運(yùn)行穩(wěn)定可靠。一般通過(guò)插件模式拓展小的功能。Openfire自身提供了一些功能插件,可以根據(jù)需要安裝使用。沒(méi)有自己需要的功能時(shí)就要進(jìn)行二次開(kāi)發(fā)了。如新興即時(shí)通項(xiàng)目中包含一個(gè)消息中轉(zhuǎn)插件,其功能是讀取指定數(shù)據(jù)表中的消息記錄并發(fā)送給指定用戶。這樣在實(shí)時(shí)性要求不高時(shí),只需向數(shù)據(jù)表中插入一條消息記錄即可實(shí)現(xiàn)消息發(fā)送。方便企業(yè)中其它信息系統(tǒng)通過(guò)Openfire發(fā)送消息。
2)Sparkweb
Sparkweb是一套XMPP客戶端,功能較Spark弱一些。優(yōu)點(diǎn)是體積小巧,界面比較漂亮。默認(rèn)在網(wǎng)頁(yè)中運(yùn)行。
客戶端是二次開(kāi)發(fā)的重點(diǎn)所在。新興即時(shí)通項(xiàng)目把Sparkweb由原來(lái)的RIA網(wǎng)頁(yè)運(yùn)行模式改為AIR桌面運(yùn)行模式;新增彈框功能,可以在收到消息時(shí)彈出消息面板,平時(shí)停留在托盤(pán)區(qū)。新興即時(shí)通主界面如圖1。
圖1 新興即時(shí)通主界面
l 修改了消息聚合模式,由默認(rèn)的按用戶聚合改為按消息方向聚合。如上圖,按消息方向分為收到消息、發(fā)送消息、反饋消息。
l 聯(lián)系人處理方式也進(jìn)行了變更,新增花名冊(cè)。花名冊(cè)包含公司所有用戶,按單位部門(mén)進(jìn)行樹(shù)形排列??梢灾苯訉?duì)花名冊(cè)中的用戶發(fā)送消息,或者選定多人進(jìn)行群發(fā)消息。
l 原有聯(lián)系人功能變更為常用聯(lián)系人。通過(guò)雙擊消息可彈出消息發(fā)送窗口,進(jìn)行回復(fù)。歷史消息查閱等。
Sparkweb項(xiàng)目源碼包含SparkWeb、SparkWebCommonComponents、SparkWebCore、XIFF四部分。二次開(kāi)發(fā)主要集中在SparkWeb、SparkWebCommonComponents兩部分中。
3 結(jié)束語(yǔ)
Openfire和Sparkweb基于標(biāo)準(zhǔn)化通信協(xié)議,拓展性強(qiáng)。基于Openfire和Spark二次開(kāi)發(fā)的企業(yè)內(nèi)部即時(shí)消息系統(tǒng)在實(shí)際運(yùn)行中穩(wěn)定可靠。經(jīng)過(guò)二次開(kāi)發(fā)后使整套系統(tǒng)提供的功能更加符合企業(yè)應(yīng)用的需要,成為企業(yè)信息系統(tǒng)重要的組成部分。
參考文獻(xiàn):
[1] Ignite Realtime:Openfire Server[EB/OL].[2015-03-02].http://www.igniterealtime.org/projects/openfire/index.jsp.
[2] Ignite Realtime: SparkWeb IM Client[EB/OL].[2015-03-06].http://www.igniterealtime.org/projects/sparkweb/index.jsp.