Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 基於XMPP協議的手機多方多端即時通訊方案

基於XMPP協議的手機多方多端即時通訊方案

編輯:Android開發實例

目   錄

基於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

一、開發背景

1、國際背景

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

2、國內背景

目前國內外及時通信軟件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的,甚 至連中國移動都力推飛信,希望分得一杯羹。然而這些即時通訊不能實現互聯互通,限制了用戶的擴展。

3、為什麼選擇XMPP協議

雖然現在即時通信軟件有很多,但是它們之間不能互聯互通也阻礙了及時通信用戶的繼續擴展。因此,在現階段的各種即使通信服務,沒有統一的標准,無法實現互聯互通的局面下,而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(www.xmpp.org)由Jabber軟件基金會開發,最早在Jabber上實現。Jabber項目由Jeremie Miller在1998年開始的一個免費、開源的項目,用於提供給MSN、Yahoo!的IM服務。由於XMPP是一種基於XML架構的開放式協議,在IM通訊中被廣泛采用。

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協議介紹

1、Xmpp協議概述

XMPP(Extensible Messaging and Presence Protocol,前稱Jabber[1])是一種以XML為基礎的開放式實時通信協議,是經由互聯網工程工作小組(IETF)通過的互聯網標准。

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

可擴展消息處理現場協議(eXtensible Messaging and Presence Protocol , XMPP) 是一種基於可擴展標記語言(eXtensible Markup Language, XML)的近端串流式即時通信協議。它將現場和上下文敏感信息標記嵌入到XML 結構化數據中, 使得人與人之間、應用系統之間以及人與應用系統之間能即時相互通信。XMPP 協議已被批准為互聯網即時通信協議標准。

2、Xmpp協議內容

 XMPP中定義了三個角色,客戶端,服務器,網關。通信能夠在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,連接管理和信息的路由功能。網關承擔著與異構即時通信系統的互聯互通,異構系統可以包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端通過TCP/IP連接到單服務器,然後在之上傳輸XML。

3、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技術開發軟件,資源及支持的來源是多樣的,使得使你不會陷於被“綁架”的困境。

4、Xmpp協議缺點

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

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

5、Xmpp提供電子名片協議

vCard是一種現存的、廣泛使用的,用戶個人信息存儲的標准,有點像是電子名片。基礎的功能是存儲和獲取用戶的電子身份,該信息是用XML表示的,數據的存儲取決於所有現存的Jabber服務器的實現。

6、XMPP系統特點

客戶機/服務器通信模式、分布式網絡、簡單的客戶端、XML的數據格式。

三、服務器端介紹

1、什麼是Openfire

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

Openfire安裝和使用都非常簡單,並利用Web進行管理。單台服務器可支持上萬並發用戶。

  由於是采用開放的XMPP協議,您可以使用各種支持XMPP協議的IM客戶端軟件登陸服務.

2、為什麼使用Openfire

A、Openfire為Java開源項目

B、采用開放的XMPP協議

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

D、使用Socket通訊

E、 單台服務器可支持上萬並發用戶,搭建分布式雲服務器可輕松提供大量並發用戶。

F、 Socket長連接

G、服務器穩定

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

3、Windows下搭建服務器

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

4、Linux下搭建服務器

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

5、Mac下搭建服務器

四、客戶端介紹

1、手機客戶端

A、ForAndroidClient

手機登錄界面

 

手機IM聯系人列表

手機用戶與PC客戶端用戶聊天

手機用戶與Web端用戶聊天 


B、ForMobileClient

C、  ForIphoneClient

D、  ForSymbian

E、ForWp7

2、Pc客戶端

A、SparkForJava(OpenSource)

 

PC端用戶登錄界面

PC端IM聯系人界面列表

PC端用戶與手機端用戶聊天界面

 

PC端用戶與Web端用戶聊天

B、SparkForC# (OpenSource)

2、Web客戶端

A、RIA (Flex   And   Silverlight)

B、 Html5

C、Web2.0

Web端登錄

 

Web端與PC聊天

Web端與手機端聊天

五、環境搭建

1、安裝JDK

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

2、安裝OpenFire

下載Openfire,並正常默認安裝。

3、安裝Mysql

下載安裝Mysql,指定Mysql的用戶名和密碼,以及數據庫使用的編碼。確定是否允許遠程訪問該數據庫。

4、安裝Apach Tomcat

下載Apach基金會下的Tomcat服務器,並且解壓安裝。

5、配置環境

登陸Openfire服務器控制台,設置相關的信息。如:端口,插件等。

並將項目部署到Apach tomcat中。

6、安裝項目

1、  ForAndroid

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

2、  ForPc

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

3、  ForWeb

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

點擊運行後:

7、設置服務器地址

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

8、注冊用戶

可以在服務器端直接注冊用戶,也可以在客戶端注冊用戶。

9、進行相對應的操作

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

六、項目演示

1、服務器端設置

A、Openfire 控制台

 

服務器主界面:

控制台主界面:


 

控制台內部管理:


用戶/組管理:

會話管理:


聊天管理:


 

 

A、Mysql數據庫

 

 

數據庫表結構:

 

2、客戶端設置

A、ForAndroid

 

B、ForPc

 

 

C、ForWeb

 

七、多方、多端即時通訊

1、QQ、FaceBook、Twitter、MSN Messenger、Yahoo Messenger、AIM、Gadu-Gadu、ICQ、Google Talk、Popo

研讀不同的通信協議,將Internet中常用的IM集成在一起,使得用戶在操作系統中不必安裝太多的聊天軟件。

2、PC、Pad、Phone、Web

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

八、解決方案

1、一個應用程序,多類型賬戶可同時登陸。

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

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

 

 

 

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

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 賬號的用戶進行交流了。

九、全文概要圖

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved