天天看點

基于XMPP協定的手機多方多端即時通訊方案

基于XMPP協定的手機多方多端即時通訊方案................................................................. 1

目   錄.................................................................................................................... 2

一、 開發背景.......................................................................................................... 3

1、       國際背景................................................................................................. 3

2、       國内背景................................................................................................. 3

3、       為什麼選擇XMPP協定.............................................................................. 3

二、 Xmpp協定介紹................................................................................................ 5

1、 Xmpp協定概述............................................................................................. 5

2、 Xmpp協定内容............................................................................................. 5

3、 Xmpp協定優點............................................................................................. 5

4、 Xmpp協定缺點............................................................................................. 6

5、 Xmpp提供電子名片協定............................................................................... 6

6、 XMPP系統特點............................................................................................. 7

三、 伺服器端介紹................................................................................................... 7

1、       什麼是Openfire...................................................................................... 7

2、       為什麼使用Openfire............................................................................... 7

3、       Windows下搭建伺服器............................................................................. 7

4、       Linux下搭建伺服器................................................................................. 7

5、Mac下搭建伺服器......................................................................................... 8

四、 用戶端介紹...................................................................................................... 8

1、       手機用戶端.............................................................................................. 8

2、Pc用戶端.................................................................................................... 10

2、       Web用戶端............................................................................................. 12

五、 環境搭建........................................................................................................ 13

1、       安裝JDK................................................................................................ 13

2、       安裝OpenFire........................................................................................ 13

3、       安裝Mysql............................................................................................. 14

4、       安裝Apach Tomcat................................................................................. 14

5、       配置環境............................................................................................... 14

6、       安裝項目............................................................................................... 14

7、       設定伺服器位址..................................................................................... 15

8、       注冊使用者............................................................................................... 15

9、       進行相對應的操作................................................................................. 16

六、項目示範.......................................................................................................... 16

1、伺服器端設定.............................................................................................. 16

2、用戶端設定................................................................................................. 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、一個應用程式,多類型賬戶可同時登陸。.................................................... 21

2、一個應用程式,一個賬戶可以和其他類型的賬戶好友聊天。........................ 23

九、全文概要圖...................................................................................................... 24

随着Internet技術的高速發展,即時通信已經成為一種廣泛使用的通信方式。1996年Mirabilis公司推出了世界上第一個即時通信系統ICQ,不到10年間,即時通信(Instant Messaging,簡稱IM)以發展成為了最流行的網絡應用之一。特别是近幾年的迅速發展,即時通信的功能日益豐富,它不再是個單純的聊天工具,它已經發展成集交流、資訊、娛樂、音樂、電視、遊戲、電子商務等為一體的綜合化資訊平台。

目前國内外及時通信軟體IM(Instant Messenger )形勢風起雲湧,可謂戰況空前,IM作為繼Email和Web之後最主要的網際網路基礎應用之一,為商家必争之地。國内的形勢由于QQ的壟斷性優勢明顯,表 面稍顯平靜,實則暗流湧動。目前來看,胖企鵝公司以壓倒性優勢占據了國内IM市場近八成份額,并且緊緊抓住低端市場,使用者數量龐大,盈利豐厚。其他的IM 微軟MSN(WLM)、網易POPO、新浪UC、TOM Skype、Google Gtalk等占有率較為慘烈,還有雅虎即時通、AIM、ICQ以及傳聞中的Baidu IM和搜狐搜Q以及一些目前并不出名的如校内網的校内通,Lava-lava等等等等,凡在國内叫得上号的叫不上号的網際網路企業,幾乎沒有不推IM的,甚 至連中國移動都力推飛信,希望分得一杯羹。然而這些即時通訊不能實作互聯互通,限制了使用者的擴充。

雖然現在即時通信軟體有很多,但是它們之間不能互聯互通也阻礙了及時通信使用者的繼續擴充。是以,在現階段的各種即使通信服務,沒有統一的标準,無法實作互聯互通的局面下,而XMPP(Extensible Message and presence Protocol)協定的出現,實作了整個及時通信服務協定的互通。有了這個協定之後,使用任何一個組織或者個人提供的即使通信服務,都能夠無障礙的與其他的及時通信服務的使用者進行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP協定的即使通信軟體。

目前IM即時通信有四種協定:

1.即時資訊和空間協定(IMPP)

2.空間和即時資訊協定(PRIM)

3.針對即時通訊和空間平衡擴充的程序開始協定SIP

4.XMPP協定:該協定的前身是Jabber,我們采取XMPP協定主來實作IM主要是考慮XMPP協定是以XML為基礎的,它繼承了在XML環境中靈活的發展性。這表明XMPP是可擴充的,是以XMPP資訊不僅可以是簡單的文本,而且可以攜帶複雜的資料和各種格式的檔案,也就是說XMPP協定不僅可以用在人與人之間的交流,而且可以實作軟體與軟體或軟體與人之間的交流,目前支援XMPP協定的即時通訊工具有Gtalk、FaceBook IM、Twitter、網易POPO等等通訊工具,具有非常好的發展情景。

正如任何事物都有其自身的發展規律一樣,技術和産品的進步也有其自身的規律。

從萌芽到混亂最終标準化,這是網際網路産品的基本規律。IM跟其實發展自Email,跟Email有着很多共同點。讓我們來對比一下Email目前的情況,或許會有些啟示。Email現在已經被廣泛應用,誰都不能質疑其網際網路第二應用的地位(第一應用是Web)。 Email之是以能廣泛地被應用最關鍵的原因應該是Email有一套開放标準的協定規範(包括SMTP、POP、IMAP 等),任何人都可以基于這些協定規範開放自己的Email産品,不管是Email伺服器也好,Email收發用戶端也罷還是現在頗為流行的Web形式的 Email界面,它們都是基于同一套标準。在這套标準的架構下,各個Email相關廠商都各自占據産業鍊的相應位置,互相合作互相競争,這才是一個百花齊 放的健康競争環境,而且這種健康競争最終受益者還是廣大使用者。

XMPP的基礎部分已經在2002-2004年得到了網際網路工程任務組(IETF)的準許, 這意味着XMPP在将來就像我們認為理所當然的Internet協定TCP/IP、HTTP、FTP、SMTP、POP一樣成為Internet标準;這 意味着以後我們就像使用Web、使用Email和使用FTP一樣開放地使用IM。甚至若幹年後人們會理所當然地認為163的郵箱可以給Hotmail發郵 件一樣,QQ使用者也可以添加Gtalk使用者,人們會逐漸忘卻當年軍閥割據紛亂的曆史。這是一種革命性的進步!不支援XMPP的IM将會像IBM的 Token-Ring一樣孤芳自賞或者像DEC NET協定一樣被人遺忘。遙想當年DEC NET和IBM Token-Ring也是多麼意氣風發羽扇綸巾啊!

在XMPP被準許之前,世界上已經存在了數十種支援XMPP的伺服器端和用戶端以及數百萬用 戶。嗅覺靈敏的Google作為開放源代碼社群和開放标準的最大受益者,第一時間感受到了這種趨勢,是以花重金将Gaim的作者挖去Google,于是就 有了基于XMPP的Gtalk。

開放的标準協定會導緻産品的競争更為健康和良性,整個産業鍊更為完善。當然産品之間的競争唯 一的趨勢就是同質化,産品發展到後期比拼的隻有服務。這一點在傳統産業已經被完全驗證,網際網路産業也不能逃脫。至于到時使用者是選Gtalk呢還是選 POPO呢,就像使用者現在選Gmail還是163的郵箱一樣,可以各有所好。不過IM在擴充功能以及增值服務上還有非常大的競争餘地。

XMPP是一種基于XML的協定,它繼承了在XML環境中靈活的發展性。是以,基于XMPP的應用具有超強的可擴充性。經過擴充以後的XMPP可以通過發 送擴充的資訊來處理使用者的需求,以及在XMPP的頂端建立如内容釋出系統和基于位址的服務等應用程 序。而且,XMPP包含了針對伺服器端的軟體協定,使之能與另一個進行通話,這使得開發者更容易建立客戶應用程式或給一個配好系統添加功能。

可擴充消息處理現場協定(eXtensible Messaging and Presence Protocol , XMPP) 是一種基于可擴充标記語言(eXtensible Markup Language, XML)的近端串流式即時通信協定。它将現場和上下文敏感資訊标記嵌入到XML 結構化資料中, 使得人與人之間、應用系統之間以及人與應用系統之間能即時互相通信。XMPP 協定已被準許為網際網路即時通信協定标準。

開放—XMPP協定是自由、開放、公開的,并且易于了解。而且在用戶端、伺服器、元件、源碼庫等方面,都已經各自有多種實作。

标準—網際網路工程工作小組(IETF)已經将Jabber的核心XML流協定以XMPP之名,正式列為認可的實時通信及Presence技術。而XMPP的技術規格已被定義在RFC 3920及RFC 3921。任何IM供應商在遵循XMPP協定下,都可與Google Talk實作連接配接。

證明可用—第一個Jabber(現在XMPP)技術是Jeremie Miller在1998年開發的,現在已經相當穩定;數以百計的開發者為XMPP技術而努力。今日的網際網路上有數以萬計的XMPP伺服器運作著,并有數以百萬計的人們使用XMPP實時傳訊軟體。

分布式—XMPP網絡的架構和電子郵件十分相像;XMPP核心協定通信方式是先建立一個stream,XMPP以TCP傳遞XML資料流,沒有中央主伺服器。任何人都可以運作自己的XMPP伺服器,使個人及組織能夠掌控他們的實時傳訊體驗。

安全—任何XMPP協定的伺服器可以獨立于公衆XMPP網絡(例如在企業内部網絡中),而使用SASL及TLS等技術的可靠安全性,已自帶于核心XMPP技術規格中。

可擴充—XML命名空間的威力可使任何人在核心協定的基礎上建造客制化的功能;為了維持通透性,常見的擴充由XMPP Standards Foundation。

彈性佳—XMPP除了可用在實時通信的應用程式,還能用在網絡管理、内容供稿、協同工具、檔案共享、遊戲、遠端系統監控等。

多樣性—用XMPP協定來建造及布署實時應用程式及服務的公司及開放源代碼計劃分布在各種領域;用XMPP技術開發軟體,資源及支援的來源是多樣的,使得使你不會陷于被“綁架”的困境。

資料負載太重:随着通常超過70%的XMPP協定的伺服器的資料流量的存在和近60%的被重複轉發,XMPP協定目前擁有一個大型架空中存在的資料提供給多個收件人。新的議定書正在研究,以減輕這一問題。

沒有二進制資料:XMPP協定的方式被編碼為一個單一的長的XML檔案,是以無法提供修改二進制資料。是以, 檔案傳輸協定一樣使用外部的HTTP。如果不可避免,XMPP協定還提供了帶編碼的檔案傳輸的所有資料使用的Base64。至于其他二進制資料加密會話(encrypted conversations)或圖形圖示(graphic icons)以嵌入式使用相同的方法。

vCard是一種現存的、廣泛使用的,使用者個人資訊存儲的标準,有點像是電子名片。基礎的功能是存儲和擷取使用者的電子身份,該資訊是用XML表示的,資料的存儲取決于所有現存的Jabber伺服器的實作。

客戶機/伺服器通信模式、分布式網絡、簡單的用戶端、XML的資料格式。

Openfire 采用Java開發,開源的實時協作(RTC)伺服器基于XMPP(Jabber)協定。您可以使用它輕易的建構高效率的即時通信伺服器.

Openfire安裝和使用都非常簡單,并利用Web進行管理。單台伺服器可支援上萬并發使用者。

  由于是采用開放的XMPP協定,您可以使用各種支援XMPP協定的IM用戶端軟體登陸服務.

A、Openfire為Java開源項目

B、 采用開放的XMPP協定

C、 有多種針對不通系統的版本

D、使用Socket通訊

E、 單台伺服器可支援上萬并發使用者,搭建分布式雲伺服器可輕松提供大量并發使用者。

F、 Socket長連接配接

G、伺服器穩定

H、提供接口,可自己開發插件

JDK1.6 + Openfire For Windows + Mysql5.5 + Tomcat6

JDK1.6 + Openfire For Linux + Mysql5.5 + Tomcat6

A、ForAndroidClient

手機登入界面

基于XMPP協定的手機多方多端即時通訊方案

手機IM聯系人清單

基于XMPP協定的手機多方多端即時通訊方案

手機使用者與PC用戶端使用者聊天

基于XMPP協定的手機多方多端即時通訊方案

手機使用者與Web端使用者聊天 

基于XMPP協定的手機多方多端即時通訊方案

B、ForMobileClient

C、  ForIphoneClient

D、  ForSymbian

E、ForWp7

A、SparkForJava(OpenSource)

PC端使用者登入界面

基于XMPP協定的手機多方多端即時通訊方案

PC端IM聯系人界面清單

基于XMPP協定的手機多方多端即時通訊方案

PC端使用者與手機端使用者聊天界面

基于XMPP協定的手機多方多端即時通訊方案

PC端使用者與Web端使用者聊天

基于XMPP協定的手機多方多端即時通訊方案

B、SparkForC# (OpenSource)

A、RIA (Flex   And   Silverlight)

B、 Html5

C、Web2.0

Web端登入

基于XMPP協定的手機多方多端即時通訊方案

Web端與PC聊天

基于XMPP協定的手機多方多端即時通訊方案

Web端與手機端聊天

基于XMPP協定的手機多方多端即時通訊方案

下載下傳官網的JDk,并且正常安裝,待安裝完成後設定環境變量。

下載下傳Openfire,并正常預設安裝。

下載下傳安裝Mysql,指定Mysql的使用者名和密碼,以及資料庫使用的編碼。确定是否允許遠端通路該資料庫。

下載下傳Apach基金會下的Tomcat伺服器,并且解壓安裝。

登陸Openfire伺服器控制台,設定相關的資訊。如:端口,插件等。

并将項目部署到Apach tomcat中。

1、  ForAndroid

從Tomcat中下載下傳android的項目XmppClientForAndroid.apk,并在手機中安裝。

2、  ForPc

從Tomcat中下載下傳Pc的項目 Spark.exe,并在手機中安裝。

3、  ForWeb

打開Tomcat中的項目,直接運作登陸。

點選運作後:

ForAndroid、ForPc、ForWeb 都提供了個伺服器位址設定的地方。預設Openfire的端口為5222.(除,Silverlight 的端口必須為 4502-4532)

可以在伺服器端直接注冊使用者,也可以在用戶端注冊使用者。

相對應的即時通訊方面的操作。

A、Openfire 控制台

伺服器主界面:

基于XMPP協定的手機多方多端即時通訊方案

控制台主界面:

基于XMPP協定的手機多方多端即時通訊方案

控制台内部管理:

基于XMPP協定的手機多方多端即時通訊方案

使用者/組管理:

基于XMPP協定的手機多方多端即時通訊方案

會話管理:

基于XMPP協定的手機多方多端即時通訊方案

聊天管理:

基于XMPP協定的手機多方多端即時通訊方案

A、Mysql資料庫

資料庫表結構:

基于XMPP協定的手機多方多端即時通訊方案

A、ForAndroid

B、ForPc

C、ForWeb

研讀不同的通信協定,将Internet中常用的IM內建在一起,使得使用者在作業系統中不必安裝太多的聊天軟體。

使用者可以通過PC、Pad、Phone、Web等任意一個client聊天。

類似于Live Mail,沒個賬戶隻能和本賬戶下的朋友聊天。

基于XMPP協定的手機多方多端即時通訊方案

有些國外的軟體(Palringo、Trillian)以實作該功能.

基于XMPP協定的手機多方多端即時通訊方案
基于XMPP協定的手機多方多端即時通訊方案

XMPP IM 與非XMPP 的其他IM互聯互通方法: 如果對方不是XMPP 體系中的使用者, 就要在企業IM伺服器上架設協定轉換網關。在XMPP 的IM伺服器上架設IM協定轉換網關, 要遵守RFC3922 協定, 這個協定規定了XMPP 與公共顯示和即時消息( CPIM)的映射。這裡描述一下一個使用者與MSN 使用者的交流。在與MSN 使用者交流之前, 企業IM使用者首先設定一個MSN 使用者到XMPP—MSN 協定轉換網關上( 告訴MSN 的使用者與密碼給網關) , 現在網關就可以用這個MSN賬号與MSN 系統進行交流了。綁定了MSN 使用者的企業IM使用者登入企業IM伺服器後, 協定轉換網關把MSN 賬号的好友的MSN 賬号傳回給使用者, 并在裡面做了映射, 映射到了本地XMPP 賬号。現在使用者可以跟與本地XMPP 使用者一樣, 與MSN 賬号的使用者進行交流了。

基于XMPP協定的手機多方多端即時通訊方案

本文章參考了許多網絡的資料,忘了文章連結。在這先向他們道個歉。

<a href="http://files.cnblogs.com/luxiaofeng54/%E5%9F%BA%E4%BA%8Exmpp%E5%8D%8F%E8%AE%AE%E7%9A%84%E5%A4%9A%E7%AB%AF%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E6%96%B9%E6%A1%88.pdf">基于xmpp協定的多端即時通訊方案.pdf</a>

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/