国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
android基于xmpp的即時通訊應(yīng)用

        xmpp是一個通信協(xié)議。因?yàn)檫@是個開放的協(xié)議,為了節(jié)儉開發(fā)成本,很多即時應(yīng)用都采用了這個協(xié)議。Android上最常用的組合asmack +openfire。Asmack是smack的android版,是對xmpp協(xié)議進(jìn)行了封裝,并提供了豐富的api,簡化了操作。Openfire是一個開源的IM服務(wù)器,基于Xmpp實(shí)現(xiàn)。換句話說使用xmpp開發(fā)即時通訊應(yīng)用的話,服務(wù)器端已經(jīng)開發(fā)好了,就是openfire。

 

        現(xiàn)在我做的一個android應(yīng)用就是采用asmack+openfire。說實(shí)在的,xmpp協(xié)議太多了,大多都是英文的,去學(xué)這個東西成本高,但是如果不學(xué),僅僅依賴openfire+asmack提供的功能很難滿足多樣性的需求。Openfire因?yàn)槭情_源的,所以可以進(jìn)行插件開發(fā)或者二次開發(fā)去滿足自己業(yè)務(wù)需求。xmpp還增加了Jingle擴(kuò)展協(xié)議來支持面向連接的業(yè)務(wù),如語音和視頻。

        之前業(yè)界xmpp最典型的例子就是Google talk,而且之前Google一直力推xmpp協(xié)議。但是Google最新的IM軟件Hangouts并沒有采用xmpp協(xié)議,對這一做法Google也沒有一個明確的回答。Google這一做法的確降低的xmpp的熱度。另外很多人說xmpp傳輸效率低,xmpp使用xml格式數(shù)據(jù)進(jìn)行通信,過多的標(biāo)簽的確可能降低傳輸效率。再說現(xiàn)在的國內(nèi)主流的IM軟件,QQ,微信等,都是采用自己私有的通信協(xié)議。Openfire采用的TCP連接,QQ采用TCP+UDP。

        是開發(fā)自己的協(xié)議,是使用xmpp協(xié)議,還是用封裝好的xmpp協(xié)議(smack)+現(xiàn)成的服務(wù)器(openfire)就是大家的決定了。不過要說的是三種方案靈活性依次降低,成本也依次降低。我們項(xiàng)目的預(yù)算比較低所以采用了asmack+openfire。不過這里我要說的是僅僅依賴asmack+openfire是滿足不了常規(guī)的業(yè)務(wù)需求的。所以我們的項(xiàng)目引入了webservice,同時嘗試對openfire進(jìn)行插件開發(fā)。

        這里我可以說說asmack+openfire開發(fā)遇到的一些無力的地方,比如:

        用戶無法接受離線的圖片,語音。

        群成員在離線后就會離開群(細(xì)來說,smack沒有群的概念,只有個聊天室)

        群聊里沒有辦法發(fā)圖片(點(diǎn)對點(diǎn)的時候發(fā)送圖片使用的是文件傳輸,只能一對一,不能一對多)


        其他的問題就不在細(xì)說。對于上述的問題會在后續(xù)的文章中分享自己的解決方案。

Xmpp最大的優(yōu)勢是什么,在我看來就是開源。這種開源可以讓任意兩個使用xmpp協(xié)議的軟件進(jìn)行通信。

開發(fā)之前有必要了解一些xmpp的一些數(shù)據(jù)結(jié)構(gòu)。Xmpp連接使用xml流,這個XML流相當(dāng)于一個會話期間所有XML節(jié)的一個信封

  |--------------------|  | <stream>           |  |--------------------|  | <presence>         |  |   <show/>          |  | </presence>        |  |--------------------|  | <message to='foo'> |  |   <body/>          |  | </message>         |  |--------------------|  | <iq to='bar'>      |  |   <query/>         |  | </iq>              |  |--------------------|  | ...                |  |--------------------|  | </stream>          |  |--------------------|

上圖中的幾個節(jié)點(diǎn) presence、message、IQ對應(yīng)著asmack的3個對象。這些都是packet的子類。

 

        關(guān)于asmack的api,沒有找到單獨(dú)的asmack api,更沒有中文的。大家可以再下載jar包的同時選擇下載源碼。Eclipse引用源碼后,通過javadoc就可以看到接口說明了,和api無異。





asmack官網(wǎng):https://github.com/Flowdalic/asmack

asmack下載地址:http://asmack.freakempire.de/

openfire下載地址:http://www.igniterealtime.org/downloads/index.jsp

smack使用指南:http://www.igniterealtime.org/builds/smack/docs/latest/documentation/index.html

下載openfire的同時,大家可以下載Spark測試用

 

更新2015-3-12

現(xiàn)在smack(4.1以上版本)已經(jīng)可以直接跑在Android平臺上了,以后asmack也沒有更新的必要了。這次smack做了針對Android平臺做了很多的優(yōu)化,也是smack一次里程碑式的更新。

此外設(shè)計方案上用openfire+smack+webservice 也許是更優(yōu)秀的方案。也就是說 只使用smack的通訊功能,諸如好友關(guān)系,用戶資料這些東西都交給webservice去管理維護(hù)。

Smack參考:https://community.igniterealtime.org/blogs/ignite/2015/01/14/smack-410-beta1-available

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Openfire asmack spark開發(fā)桌面與android平臺的即時通訊軟件
基于XMPP協(xié)議的手機(jī)多方多端即時通訊方案
Android基于XMPP Smack Openfire下學(xué)習(xí)開發(fā)IM(二)對分組、好友和頭像等一些操作
Android推送通知指南
Android Push開源方案解析
【新知提升】Android中的消息推送
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服