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

基於XMPP協議的手機多方多端即時通信方案................................................................. 1android

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

1、 開發背景.......................................................................................................... 3數據庫

一、       國際背景................................................................................................. 3tomcat

二、       國內背景................................................................................................. 3安全

三、       爲何選擇XMPP協議.............................................................................. 3服務器

2、 Xmpp協議介紹................................................................................................ 5網絡

一、 Xmpp協議概述............................................................................................. 5架構

二、 Xmpp協議內容............................................................................................. 5併發

三、 Xmpp協議優勢............................................................................................. 5框架

四、 Xmpp協議缺點............................................................................................. 6

五、 Xmpp提供電子名片協議............................................................................... 6

六、 XMPP系統特色............................................................................................. 7

3、 服務器端介紹................................................................................................... 7

一、       什麼是Openfire...................................................................................... 7

二、       爲何使用Openfire............................................................................... 7

三、       Windows下搭建服務器............................................................................. 7

四、       Linux下搭建服務器................................................................................. 7

五、Mac下搭建服務器......................................................................................... 8

4、 客戶端介紹...................................................................................................... 8

一、       手機客戶端.............................................................................................. 8

二、Pc客戶端.................................................................................................... 10

二、       Web客戶端............................................................................................. 12

5、 環境搭建........................................................................................................ 13

一、       安裝JDK................................................................................................ 13

二、       安裝OpenFire........................................................................................ 13

三、       安裝Mysql............................................................................................. 14

四、       安裝Apach Tomcat................................................................................. 14

五、       配置環境............................................................................................... 14

六、       安裝項目............................................................................................... 14

七、       設置服務器地址..................................................................................... 15

八、       註冊用戶............................................................................................... 15

九、       進行相對應的操做................................................................................. 16

6、項目演示.......................................................................................................... 16

一、服務器端設置.............................................................................................. 16

二、客戶端設置................................................................................................. 19

7、多方、多端即時通信........................................................................................ 21

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

二、PC、Pad、Phone、Web................................................................................ 21

8、解決方案.......................................................................................................... 21

一、一個應用程序,多類型帳戶可同時登錄。.................................................... 21

二、一個應用程序,一個帳戶能夠和其餘類型的帳戶好友聊天。........................ 23

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

1、開發背景

一、國際背景

隨着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協議

雖然如今即時通訊軟件有不少,可是它們之間不能互聯互通也阻礙了及時通訊用戶的繼續擴展。所以,在現階段的各類即便通訊服務,沒有統一的標準,沒法實現互聯互通的局面下,而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在擴展功能以及增值服務上還有很是大的競爭餘地。

2、Xmpp協議介紹

一、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 協議已被批准爲互聯網即時通訊協議標準。

二、Xmpp協議內容

 XMPP中定義了三個角色,客戶端,服務器,網關。通訊可以在這三者的任意兩個之間雙向發生。服務器同時承擔了客戶端信息記錄,鏈接管理和信息的路由功能。網關承擔着與異構即時通訊系統的互聯互通,異構系統能夠包括SMS(短信),MSN,ICQ等。基本的網絡形式是單客戶端經過TCP/IP鏈接到單服務器,而後在之上傳輸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技術開發軟件,資源及支持的來源是多樣的,使得使你不會陷於被「綁架」的困境。

四、Xmpp協議缺點

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

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

五、Xmpp提供電子名片協議

vCard是一種現存的、普遍使用的,用戶我的信息存儲的標準,有點像是電子名片。基礎的功能是存儲和獲取用戶的電子身份,該信息是用XML表示的,數據的存儲取決於全部現存的Jabber服務器的實現。

六、XMPP系統特色

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

3、服務器端介紹

一、什麼是Openfire

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

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

  因爲是採用開放的XMPP協議,您可使用各類支持XMPP協議的IM客戶端軟件登錄服務.

二、爲何使用Openfire

A、Openfire爲Java開源項目

B、 採用開放的XMPP協議

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

D、使用Socket通信

E、 單臺服務器可支持上萬併發用戶,搭建分佈式雲服務器可輕鬆提供大量併發用戶。

F、 Socket長鏈接

G、服務器穩定

H、提供接口,可本身開發插件

三、Windows下搭建服務器

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

四、Linux下搭建服務器

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

五、Mac下搭建服務器

4、客戶端介紹

一、手機客戶端

A、ForAndroidClient

手機登陸界面

 

手機IM聯繫人列表

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

手機用戶與Web端用戶聊天 


B、ForMobileClient

C、  ForIphoneClient

D、  ForSymbian

E、ForWp7

二、Pc客戶端

A、SparkForJava(OpenSource)

 

PC端用戶登陸界面

PC端IM聯繫人界面列表

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

 

PC端用戶與Web端用戶聊天

B、SparkForC# (OpenSource)

二、Web客戶端

A、RIA (Flex   And   Silverlight)

B、 Html5

C、Web2.0

Web端登陸

 

Web端與PC聊天

Web端與手機端聊天

5、環境搭建

一、安裝JDK

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

二、安裝OpenFire

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

三、安裝Mysql

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

四、安裝Apach Tomcat

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

五、配置環境

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

並將項目部署到Apach tomcat中。

六、安裝項目

一、  ForAndroid

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

二、  ForPc

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

三、  ForWeb

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

點擊運行後:

七、設置服務器地址

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

八、註冊用戶

能夠在服務器端直接註冊用戶,也能夠在客戶端註冊用戶。

九、進行相對應的操做

相對應的即時通信方面的操做。

6、項目演示

一、服務器端設置

A、Openfire 控制檯

 

服務器主界面:

控制檯主界面:


 

控制檯內部管理:


用戶/組管理:

會話管理:


聊天管理:


 

 

A、Mysql數據庫

 

 

數據庫表結構:

 

二、客戶端設置

A、ForAndroid

 

B、ForPc

 

 

C、ForWeb

 

7、多方、多端即時通信

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

研讀不一樣的通訊協議,將Internet中經常使用的IM集成在一塊兒,使得用戶在操做系統中沒必要安裝太多的聊天軟件。

二、PC、Pad、Phone、Web

用戶能夠經過PC、Pad、Phone、Web等任意一個client聊天。

8、解決方案

一、一個應用程序,多類型帳戶可同時登錄。

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

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

 

 

 

二、一個應用程序,一個帳戶能夠和其餘類型的帳戶好友聊天。

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

9、全文概要圖

相關文章
相關標籤/搜索