http://www.cnblogs.com/luxiaofeng54/archive/2011/03/14/1984026.html
基于XMPP協(xié)議的手機(jī)多方多端即時通訊方案................................................................. 1
目 錄.................................................................................................................... 2
一、 開發(fā)背景.......................................................................................................... 3
1、 國際背景................................................................................................. 3
2、 國內(nèi)背景................................................................................................. 3
3、 為什么選擇XMPP協(xié)議.............................................................................. 3
二、 Xmpp協(xié)議介紹................................................................................................ 5
1、 Xmpp協(xié)議概述............................................................................................. 5
2、 Xmpp協(xié)議內(nèi)容............................................................................................. 5
3、 Xmpp協(xié)議優(yōu)點(diǎn)............................................................................................. 5
4、 Xmpp協(xié)議缺點(diǎn)............................................................................................. 6
5、 Xmpp提供電子名片協(xié)議............................................................................... 6
6、 XMPP系統(tǒng)特點(diǎn)............................................................................................. 7
三、 服務(wù)器端介紹................................................................................................... 7
1、 什么是Openfire...................................................................................... 7
2、 為什么使用Openfire............................................................................... 7
3、 Windows下搭建服務(wù)器............................................................................. 7
4、 Linux下搭建服務(wù)器................................................................................. 7
5、Mac下搭建服務(wù)器......................................................................................... 8
四、 客戶端介紹...................................................................................................... 8
1、 手機(jī)客戶端.............................................................................................. 8
2、Pc客戶端.................................................................................................... 10
2、 Web客戶端............................................................................................. 12
五、 環(huán)境搭建........................................................................................................ 13
1、 安裝JDK................................................................................................ 13
2、 安裝OpenFire........................................................................................ 13
3、 安裝Mysql............................................................................................. 14
4、 安裝Apach Tomcat................................................................................. 14
5、 配置環(huán)境............................................................................................... 14
6、 安裝項(xiàng)目............................................................................................... 14
7、 設(shè)置服務(wù)器地址..................................................................................... 15
8、 注冊用戶............................................................................................... 15
9、 進(jìn)行相對應(yīng)的操作................................................................................. 16
六、項(xiàng)目演示.......................................................................................................... 16
1、服務(wù)器端設(shè)置.............................................................................................. 16
2、客戶端設(shè)置................................................................................................. 19
七、多方、多端即時通訊........................................................................................ 21
1、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo 21
2、PC、Pad、Phone、Web................................................................................ 21
八、解決方案.......................................................................................................... 21
1、一個應(yīng)用程序,多類型賬戶可同時登陸。.................................................... 21
2、一個應(yīng)用程序,一個賬戶可以和其他類型的賬戶好友聊天。........................ 23
九、全文概要圖...................................................................................................... 24
一、開發(fā)背景
1、國際背景
隨著Internet技術(shù)的高速發(fā)展,即時通信已經(jīng)成為一種廣泛使用的通信方式。1996年Mirabilis公司推出了世界上第一個即時通信系統(tǒng)ICQ,不到10年間,即時通信(Instant Messaging,簡稱IM)以發(fā)展成為了最流行的網(wǎng)絡(luò)應(yīng)用之一。特別是近幾年的迅速發(fā)展,即時通信的功能日益豐富,它不再是個單純的聊天工具,它已經(jīng)發(fā)展成集交流、資訊、娛樂、音樂、電視、游戲、電子商務(wù)等為一體的綜合化信息平臺。
2、國內(nèi)背景
目前國內(nèi)外及時通信軟件IM(Instant Messenger )形勢風(fēng)起云涌,可謂戰(zhàn)況空前,IM作為繼Email和Web之后最主要的互聯(lián)網(wǎng)基礎(chǔ)應(yīng)用之一,為商家必爭之地。國內(nèi)的形勢由于QQ的壟斷性優(yōu)勢明顯,表 面稍顯平靜,實(shí)則暗流涌動。目前來看,胖企鵝公司以壓倒性優(yōu)勢占據(jù)了國內(nèi)IM市場近八成份額,并且緊緊抓住低端市場,用戶數(shù)量龐大,盈利豐厚。其他的IM 微軟MSN(WLM)、網(wǎng)易POPO、新浪UC、TOM Skype、Google Gtalk等占有率較為慘烈,還有雅虎即時通、AIM、ICQ以及傳聞中的Baidu IM和搜狐搜Q以及一些目前并不出名的如校內(nèi)網(wǎng)的校內(nèi)通,Lava-lava等等等等,凡在國內(nèi)叫得上號的叫不上號的互聯(lián)網(wǎng)企業(yè),幾乎沒有不推IM的,甚 至連中國移動都力推飛信,希望分得一杯羹。然而這些即時通訊不能實(shí)現(xiàn)互聯(lián)互通,限制了用戶的擴(kuò)展。
3、為什么選擇XMPP協(xié)議
雖然現(xiàn)在即時通信軟件有很多,但是它們之間不能互聯(lián)互通也阻礙了及時通信用戶的繼續(xù)擴(kuò)展。因此,在現(xiàn)階段的各種即使通信服務(wù),沒有統(tǒng)一的標(biāo)準(zhǔn),無法實(shí)現(xiàn)互聯(lián)互通的局面下,而XMPP(Extensible Message and presence Protocol)協(xié)議的出現(xiàn),實(shí)現(xiàn)了整個及時通信服務(wù)協(xié)議的互通。有了這個協(xié)議之后,使用任何一個組織或者個人提供的即使通信服務(wù),都能夠無障礙的與其他的及時通信服務(wù)的用戶進(jìn)行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP協(xié)議的即使通信軟件。
目前IM即時通信有四種協(xié)議:
1.即時信息和空間協(xié)議(IMPP)
2.空間和即時信息協(xié)議(PRIM)
3.針對即時通訊和空間平衡擴(kuò)充的進(jìn)程開始協(xié)議SIP
4.XMPP協(xié)議:該協(xié)議的前身是Jabber,我們采取XMPP協(xié)議主來實(shí)現(xiàn)IM主要是考慮XMPP協(xié)議是以XML為基礎(chǔ)的,它繼承了在XML環(huán)境中靈活的發(fā)展性。這表明XMPP是可擴(kuò)展的,所以XMPP信息不僅可以是簡單的文本,而且可以攜帶復(fù)雜的數(shù)據(jù)和各種格式的文件,也就是說XMPP協(xié)議不僅可以用在人與人之間的交流,而且可以實(shí)現(xiàn)軟件與軟件或軟件與人之間的交流,目前支持XMPP協(xié)議的即時通訊工具有Gtalk、FaceBook IM、Twitter、網(wǎng)易POPO等等通訊工具,具有非常好的發(fā)展情景。
正如任何事物都有其自身的發(fā)展規(guī)律一樣,技術(shù)和產(chǎn)品的進(jìn)步也有其自身的規(guī)律。
從萌芽到混亂最終標(biāo)準(zhǔn)化,這是互聯(lián)網(wǎng)產(chǎn)品的基本規(guī)律。IM跟其實(shí)發(fā)展自Email,跟Email有著很多共同點(diǎn)。讓我們來對比一下Email目前的情況,或許會有些啟示。Email現(xiàn)在已經(jīng)被廣泛應(yīng)用,誰都不能質(zhì)疑其互聯(lián)網(wǎng)第二應(yīng)用的地位(第一應(yīng)用是Web)。 Email之所以能廣泛地被應(yīng)用最關(guān)鍵的原因應(yīng)該是Email有一套開放標(biāo)準(zhǔn)的協(xié)議規(guī)范(包括SMTP、POP、IMAP 等),任何人都可以基于這些協(xié)議規(guī)范開放自己的Email產(chǎn)品,不管是Email服務(wù)器也好,Email收發(fā)客戶端也罷還是現(xiàn)在頗為流行的Web形式的 Email界面,它們都是基于同一套標(biāo)準(zhǔn)。在這套標(biāo)準(zhǔn)的框架下,各個Email相關(guān)廠商都各自占據(jù)產(chǎn)業(yè)鏈的相應(yīng)位置,相互合作相互競爭,這才是一個百花齊放的健康競爭環(huán)境,而且這種健康競爭最終受益者還是廣大用戶。
XMPP(www.xmpp.org)由Jabber軟件基金會開發(fā),最早在Jabber上實(shí)現(xiàn)。Jabber項(xiàng)目由Jeremie Miller在1998年開始的一個免費(fèi)、開源的項(xiàng)目,用于提供給MSN、Yahoo!的IM服務(wù)。由于XMPP是一種基于XML架構(gòu)的開放式協(xié)議,在IM通訊中被廣泛采用。
XMPP的基礎(chǔ)部分已經(jīng)在2002-2004年得到了互聯(lián)網(wǎng)工程任務(wù)組(IETF)的批準(zhǔn), 這意味著XMPP在將來就像我們認(rèn)為理所當(dāng)然的Internet協(xié)議TCP/IP、HTTP、FTP、SMTP、POP一樣成為Internet標(biāo)準(zhǔn);這意味著以后我們就像使用Web、使用Email和使用FTP一樣開放地使用IM。甚至若干年后人們會理所當(dāng)然地認(rèn)為163的郵箱可以給Hotmail發(fā)郵 件一樣,QQ用戶也可以添加Gtalk用戶,人們會逐漸忘卻當(dāng)年軍閥割據(jù)紛亂的歷史。這是一種革命性的進(jìn)步!不支持XMPP的IM將會像IBM的 Token-Ring一樣孤芳自賞或者像DEC NET協(xié)議一樣被人遺忘。遙想當(dāng)年DEC NET和IBM Token-Ring也是多么意氣風(fēng)發(fā)羽扇綸巾啊!
在XMPP被批準(zhǔn)之前,世界上已經(jīng)存在了數(shù)十種支持XMPP的服務(wù)器端和客戶端以及數(shù)百萬用 戶。嗅覺靈敏的Google作為開放源代碼社區(qū)和開放標(biāo)準(zhǔn)的最大受益者,第一時間感受到了這種趨勢,所以花重金將Gaim的作者挖去Google,于是就 有了基于XMPP的Gtalk。
開放的標(biāo)準(zhǔn)協(xié)議會導(dǎo)致產(chǎn)品的競爭更為健康和良性,整個產(chǎn)業(yè)鏈更為完善。當(dāng)然產(chǎn)品之間的競爭唯 一的趨勢就是同質(zhì)化,產(chǎn)品發(fā)展到后期比拼的只有服務(wù)。這一點(diǎn)在傳統(tǒng)產(chǎn)業(yè)已經(jīng)被完全驗(yàn)證,互聯(lián)網(wǎng)產(chǎn)業(yè)也不能逃脫。至于到時用戶是選Gtalk呢還是選 POPO呢,就像用戶現(xiàn)在選Gmail還是163的郵箱一樣,可以各有所好。不過IM在擴(kuò)展功能以及增值服務(wù)上還有非常大的競爭余地。
二、Xmpp協(xié)議介紹
1、Xmpp協(xié)議概述
XMPP(Extensible Messaging and Presence Protocol,前稱Jabber[1])是一種以XML為基礎(chǔ)的開放式實(shí)時通信協(xié)議,是經(jīng)由互聯(lián)網(wǎng)工程工作小組(IETF)通過的互聯(lián)網(wǎng)標(biāo)準(zhǔn)。
XMPP是一種基于XML的協(xié)議,它繼承了在XML環(huán)境中靈活的發(fā)展性。因此,基于XMPP的應(yīng)用具有超強(qiáng)的可擴(kuò)展性。經(jīng)過擴(kuò)展以后的XMPP可以通過發(fā) 送擴(kuò)展的信息來處理用戶的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對服務(wù)器端的軟件協(xié)議,使之能與另一個進(jìn)行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個配好系統(tǒng)添加功能。
可擴(kuò)展消息處理現(xiàn)場協(xié)議(eXtensible Messaging and Presence Protocol , XMPP) 是一種基于可擴(kuò)展標(biāo)記語言(eXtensible Markup Language, XML)的近端串流式即時通信協(xié)議。它將現(xiàn)場和上下文敏感信息標(biāo)記嵌入到XML 結(jié)構(gòu)化數(shù)據(jù)中, 使得人與人之間、應(yīng)用系統(tǒng)之間以及人與應(yīng)用系統(tǒng)之間能即時相互通信。XMPP 協(xié)議已被批準(zhǔn)為互聯(lián)網(wǎng)即時通信協(xié)議標(biāo)準(zhǔn)。
2、Xmpp協(xié)議內(nèi)容
XMPP中定義了三個角色,客戶端,服務(wù)器,網(wǎng)關(guān)。通信能夠在這三者的任意兩個之間雙向發(fā)生。服務(wù)器同時承擔(dān)了客戶端信息記錄,連接管理和信息的路由功能。網(wǎng)關(guān)承擔(dān)著與異構(gòu)即時通信系統(tǒng)的互聯(lián)互通,異構(gòu)系統(tǒng)可以包括SMS(短信),MSN,ICQ等。基本的網(wǎng)絡(luò)形式是單客戶端通過TCP/IP連接到單服務(wù)器,然后在之上傳輸XML。
3、Xmpp協(xié)議優(yōu)點(diǎn)
開放—XMPP協(xié)議是自由、開放、公開的,并且易于了解。而且在客戶端、服務(wù)器、組件、源碼庫等方面,都已經(jīng)各自有多種實(shí)現(xiàn)。
標(biāo)準(zhǔn)—互聯(lián)網(wǎng)工程工作小組(IETF)已經(jīng)將Jabber的核心XML流協(xié)議以XMPP之名,正式列為認(rèn)可的實(shí)時通信及Presence技術(shù)。而XMPP的技術(shù)規(guī)格已被定義在RFC 3920及RFC 3921。任何IM供應(yīng)商在遵循XMPP協(xié)議下,都可與Google Talk實(shí)現(xiàn)連接。
證實(shí)可用—第一個Jabber(現(xiàn)在XMPP)技術(shù)是Jeremie Miller在1998年開發(fā)的,現(xiàn)在已經(jīng)相當(dāng)穩(wěn)定;數(shù)以百計的開發(fā)者為XMPP技術(shù)而努力。今日的互聯(lián)網(wǎng)上有數(shù)以萬計的XMPP服務(wù)器運(yùn)作著,并有數(shù)以百萬計的人們使用XMPP實(shí)時傳訊軟件。
分布式—XMPP網(wǎng)絡(luò)的架構(gòu)和電子郵件十分相像;XMPP核心協(xié)議通信方式是先創(chuàng)建一個stream,XMPP以TCP傳遞XML數(shù)據(jù)流,沒有中央主服務(wù)器。任何人都可以運(yùn)行自己的XMPP服務(wù)器,使個人及組織能夠掌控他們的實(shí)時傳訊體驗(yàn)。
安全—任何XMPP協(xié)議的服務(wù)器可以獨(dú)立于公眾XMPP網(wǎng)絡(luò)(例如在企業(yè)內(nèi)部網(wǎng)絡(luò)中),而使用SASL及TLS等技術(shù)的可靠安全性,已自帶于核心XMPP技術(shù)規(guī)格中。
可擴(kuò)展—XML命名空間的威力可使任何人在核心協(xié)議的基礎(chǔ)上建造客制化的功能;為了維持通透性,常見的擴(kuò)展由XMPP Standards Foundation。
彈性佳—XMPP除了可用在實(shí)時通信的應(yīng)用程序,還能用在網(wǎng)絡(luò)管理、內(nèi)容供稿、協(xié)同工具、文件共享、游戲、遠(yuǎn)程系統(tǒng)監(jiān)控等。
多樣性—用XMPP協(xié)議來建造及布署實(shí)時應(yīng)用程序及服務(wù)的公司及開放源代碼計劃分布在各種領(lǐng)域;用XMPP技術(shù)開發(fā)軟件,資源及支持的來源是多樣的,使得使你不會陷于被“綁架”的困境。
4、Xmpp協(xié)議缺點(diǎn)
數(shù)據(jù)負(fù)載太重:隨著通常超過70%的XMPP協(xié)議的服務(wù)器的數(shù)據(jù)流量的存在和近60%的被重復(fù)轉(zhuǎn)發(fā),XMPP協(xié)議目前擁有一個大型架空中存在的數(shù)據(jù)提供給多個收件人。新的議定書正在研究,以減輕這一問題。
沒有二進(jìn)制數(shù)據(jù):XMPP協(xié)議的方式被編碼為一個單一的長的XML文件,因此無法提供修改二進(jìn)制數(shù)據(jù)。因此,文件傳輸協(xié)議一樣使用外部的HTTP。如果不可避免,XMPP協(xié)議還提供了帶編碼的文件傳輸?shù)乃袛?shù)據(jù)使用的Base64。至于其他二進(jìn)制數(shù)據(jù)加密會話(encrypted conversations)或圖形圖標(biāo)(graphic icons)以嵌入式使用相同的方法。
5、Xmpp提供電子名片協(xié)議
vCard是一種現(xiàn)存的、廣泛使用的,用戶個人信息存儲的標(biāo)準(zhǔn),有點(diǎn)像是電子名片。基礎(chǔ)的功能是存儲和獲取用戶的電子身份,該信息是用XML表示的,數(shù)據(jù)的存儲取決于所有現(xiàn)存的Jabber服務(wù)器的實(shí)現(xiàn)。
6、XMPP系統(tǒng)特點(diǎn)
客戶機(jī)/服務(wù)器通信模式、分布式網(wǎng)絡(luò)、簡單的客戶端、XML的數(shù)據(jù)格式。
三、服務(wù)器端介紹
1、什么是Openfire
Openfire 采用Java開發(fā),開源的實(shí)時協(xié)作(RTC)服務(wù)器基于XMPP(Jabber)協(xié)議。您可以使用它輕易的構(gòu)建高效率的即時通信服務(wù)器.
Openfire安裝和使用都非常簡單,并利用Web進(jìn)行管理。單臺服務(wù)器可支持上萬并發(fā)用戶。
由于是采用開放的XMPP協(xié)議,您可以使用各種支持XMPP協(xié)議的IM客戶端軟件登陸服務(wù).
2、為什么使用Openfire
A、Openfire為Java開源項(xiàng)目
B、采用開放的XMPP協(xié)議
C、 有多種針對不通系統(tǒng)的版本
D、使用Socket通訊
E、 單臺服務(wù)器可支持上萬并發(fā)用戶,搭建分布式云服務(wù)器可輕松提供大量并發(fā)用戶。
F、 Socket長連接
G、服務(wù)器穩(wěn)定
H、提供接口,可自己開發(fā)插件
3、Windows下搭建服務(wù)器
JDK1.6 + Openfire For Windows + Mysql5.5 + Tomcat6
4、Linux下搭建服務(wù)器
JDK1.6 + Openfire For Linux + Mysql5.5 + Tomcat6
5、Mac下搭建服務(wù)器
四、客戶端介紹
1、手機(jī)客戶端
A、ForAndroidClient
手機(jī)登錄界面

手機(jī)IM聯(lián)系人列表

手機(jī)用戶與PC客戶端用戶聊天

手機(jī)用戶與Web端用戶聊天

B、ForMobileClient
C、 ForIphoneClient
D、 ForSymbian
E、ForWp7
2、Pc客戶端
A、SparkForJava(OpenSource)
PC端用戶登錄界面

PC端IM聯(lián)系人界面列表

PC端用戶與手機(jī)端用戶聊天界面

PC端用戶與Web端用戶聊天

B、SparkForC# (OpenSource)
2、Web客戶端
A、RIA (Flex And Silverlight)
B、 Html5
C、Web2.0
Web端登錄

Web端與PC聊天

Web端與手機(jī)端聊天

五、環(huán)境搭建
1、安裝JDK
下載官網(wǎng)的JDk,并且正常安裝,待安裝完成后設(shè)置環(huán)境變量。
2、安裝OpenFire
下載Openfire,并正常默認(rèn)安裝。
3、安裝Mysql
下載安裝Mysql,指定Mysql的用戶名和密碼,以及數(shù)據(jù)庫使用的編碼。確定是否允許遠(yuǎn)程訪問該數(shù)據(jù)庫。
4、安裝Apach Tomcat
下載Apach基金會下的Tomcat服務(wù)器,并且解壓安裝。
5、配置環(huán)境
登陸Openfire服務(wù)器控制臺,設(shè)置相關(guān)的信息。如:端口,插件等。
并將項(xiàng)目部署到Apach tomcat中。
6、安裝項(xiàng)目
1、 ForAndroid
從Tomcat中下載android的項(xiàng)目XmppClientForAndroid.apk,并在手機(jī)中安裝。
2、 ForPc
從Tomcat中下載Pc的項(xiàng)目 Spark.exe,并在手機(jī)中安裝。
3、 ForWeb
打開Tomcat中的項(xiàng)目,直接運(yùn)行登陸。
點(diǎn)擊運(yùn)行后:
7、設(shè)置服務(wù)器地址
ForAndroid、ForPc、ForWeb 都提供了個服務(wù)器地址設(shè)置的地方。默認(rèn)Openfire的端口為5222.(除,Silverlight 的端口必須為 4502-4532)
8、注冊用戶
可以在服務(wù)器端直接注冊用戶,也可以在客戶端注冊用戶。
9、進(jìn)行相對應(yīng)的操作
相對應(yīng)的即時通訊方面的操作。
六、項(xiàng)目演示
1、服務(wù)器端設(shè)置
A、Openfire 控制臺
服務(wù)器主界面:

控制臺主界面:

控制臺內(nèi)部管理:

用戶/組管理:

會話管理:

聊天管理:

A、Mysql數(shù)據(jù)庫
數(shù)據(jù)庫表結(jié)構(gòu):
2、客戶端設(shè)置
A、ForAndroid
B、ForPc
C、ForWeb
七、多方、多端即時通訊
1、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo
研讀不同的通信協(xié)議,將Internet中常用的IM集成在一起,使得用戶在操作系統(tǒng)中不必安裝太多的聊天軟件。
2、PC、Pad、Phone、Web
用戶可以通過PC、Pad、Phone、Web等任意一個client聊天。
八、解決方案
1、一個應(yīng)用程序,多類型賬戶可同時登陸。
類似于Live Mail,沒個賬戶只能和本賬戶下的朋友聊天。

有些國外的軟件(Palringo、Trillian)以實(shí)現(xiàn)該功能.


2、一個應(yīng)用程序,一個賬戶可以和其他類型的賬戶好友聊天。
XMPP IM 與非XMPP 的其他IM互聯(lián)互通方法: 如果對方不是XMPP 體系中的用戶, 就要在企業(yè)IM服務(wù)器上架設(shè)協(xié)議轉(zhuǎn)換網(wǎng)關(guān)。在XMPP 的IM服務(wù)器上架設(shè)IM協(xié)議轉(zhuǎn)換網(wǎng)關(guān), 要遵守RFC3922 協(xié)議, 這個協(xié)議規(guī)定了XMPP 與公共顯示和即時消息( CPIM)的映射。這里描述一下一個用戶與MSN 用戶的交流。在與MSN 用戶交流之前, 企業(yè)IM用戶首先設(shè)置一個MSN 用戶到XMPP—MSN 協(xié)議轉(zhuǎn)換網(wǎng)關(guān)上( 告訴MSN 的用戶與密碼給網(wǎng)關(guān)) , 現(xiàn)在網(wǎng)關(guān)就可以用這個MSN賬號與MSN 系統(tǒng)進(jìn)行交流了。綁定了MSN 用戶的企業(yè)IM用戶登錄企業(yè)IM服務(wù)器后, 協(xié)議轉(zhuǎn)換網(wǎng)關(guān)把MSN 賬號的好友的MSN 賬號返回給用戶, 并在里面做了映射, 映射到了本地XMPP 賬號。現(xiàn)在用戶可以跟與本地XMPP 用戶一樣, 與MSN 賬號的用戶進(jìn)行交流了。
九、全文概要圖

本文章參考了許多網(wǎng)絡(luò)的資料,忘了文章鏈接。在這先向他們道個歉。
基于xmpp協(xié)議的多端即時通訊方案.pdf