XMPP
協議簡介
XMPP協議(Extensible Messaging and PresenceProtocol,可擴充訊息處理現場協議)是一種基於XML的協議,目的是為瞭解決及時通訊標準而提出來的,最早是在Jabber上實現的。它繼承了在XML環境中靈活的發展性。因此,基於XMPP的應用具有超強的可擴充性。並且XML很易穿過防火牆,所以用XMPP構建的應用不易受到防火牆的阻礙。利用XMPP作為通用的傳輸機制,不同組織內的不同應用都可以進行有效通訊。
這篇文章有基本的介紹,http://blog.csdn.net/xutaozero21/article/details/4873439
IM
Instant Messenger,及時通訊軟體,就是大家使用的QQ、MSN Messenger和Gtalk等等。其中Gtalk 就是基於XMPP 協議的一個實現,其他的則不是。當前IM 幾乎作為每個上網者必然使用的工具,在國外的大型企業中有一些企業級的IM應用,但是其商業價值還沒完全發揮出來。設想既然XMPP 協議是一個公開的協議,那麼每個企業都可以利用它來開發適合本身企業工作,提高自身生產效率的IM;甚至,你還可以在網路遊戲中整合這種通訊軟體,不但讓你可以邊遊戲邊聊天,也可以開發出適合遊戲本身的IM 應用,比如說一些遊戲關鍵情境提醒功能,團隊語音交流等等都可以基於IM來實現。
本文主要講解在android使用xmpp協議進行即時通訊,所涉及3個主要的東西,它們是openfire、smack和spark,這個三個東東結合起來就是完整的xmpp IM實現,這裡簡單介紹一下這3個東東在下文的作用:
openfire主要是作為伺服器,負責管理用戶端的通訊串連,以及提供用戶端一些通訊資訊和串連資訊。
Smack主要是xmpp協議的實現,提供了一套很好的api,所以下面操作xmpp都是通過使用smack的api來實現,當然因為是在android裡,所以使用的是asmack這個包,裡面方法跟smack包差不多。
Spark 是IM用戶端的實現,其實就是使用了smack 的api實現的。
展示了三者之間的關係:(很明顯這個圖是偷別人的,具體是哪裡我忘了,因為資料都是複製到文檔後慢慢研究看的)
從圖上可以瞭解到,client 端和server端都可以通過外掛程式的方式來進行擴充,smack是二者傳遞資料的媒介。
更詳細的內容及代碼,參見:
http://www.cnblogs.com/not-code/archive/2011/07/16/2108369.html