基于Jabber協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)_第1頁(yè)
基于Jabber協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)_第2頁(yè)
基于Jabber協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)_第3頁(yè)
基于Jabber協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于基于 JabberJabber 協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)協(xié)議的移動(dòng)即時(shí)通訊系統(tǒng)研究與實(shí)現(xiàn)摘摘要要本文利用支持 Jabber 協(xié)議的開(kāi)源服務(wù)器 WildFire,在基于 J2ME 平臺(tái)的手機(jī)上實(shí)現(xiàn)了一個(gè)移動(dòng)即時(shí)通訊系統(tǒng),該系統(tǒng)不但具有傳統(tǒng)即時(shí)通訊的文本信息傳遞功能,還具備拍照、傳遞照片、群組聊天以及查看資訊等功能。關(guān)鍵字關(guān)鍵字J2ME;即時(shí)通訊;Jabber;WildFire;XML;XMPP1課題研究背景移動(dòng) IM(Instant Message),也就是移動(dòng)即時(shí)信息(即時(shí)通信、即時(shí)通訊)工具,是移動(dòng)終端與即時(shí)通訊工具的結(jié)合。從最初的移動(dòng) QQ、手機(jī) MSN,到陸續(xù)出現(xiàn)的“飛信”、

2、“超信”、“靈信”,當(dāng)然還有不容忽視的 PICA,各類(lèi)型的移動(dòng)即時(shí)通訊工具讓用戶通過(guò)手機(jī)就可以與朋友或工作伙伴進(jìn)行實(shí)時(shí)交談、互傳信息、娛樂(lè)消遣,它們正改變著我們的溝通模式甚至生活習(xí)慣。但長(zhǎng)期以來(lái)各 IM 軟件廠商推出的 IM 軟件相互獨(dú)立,缺乏基于統(tǒng)一標(biāo)準(zhǔn)的互用性,使得各種 IM 系統(tǒng)之間無(wú)法互相發(fā)送信息,例如 AOL與 Yahoo,MSN 與 AOL,MSN 與 QQ 等,它們之間就不能相互通信。因此,制訂一種統(tǒng)一的協(xié)議就迫在眉睫,這種統(tǒng)一協(xié)議應(yīng)當(dāng)可用于 E-mail、Web和語(yǔ)音流的簡(jiǎn)單郵件傳輸協(xié)議(SMTP)、HTTP 和實(shí)時(shí)協(xié)議(RTP)等 IM 應(yīng)用。由Jabber 組織發(fā)展的 Ja

3、bber 協(xié)議,其中包含支持符合 IETF 規(guī)范的即時(shí)消息和Presence 技術(shù)的基本協(xié)議形成了 XMPP 協(xié)議,XMPP(Extensible Messaging andPresence Protocol,即可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)為用于現(xiàn)場(chǎng)的消息路由處理的 XML 數(shù)據(jù)流協(xié)議,被確立為 IETF 標(biāo)準(zhǔn)。本文的研究工作正是基于這一背景。 2總體方案設(shè)計(jì) 2.1總體思路移動(dòng) IM 采用的是客戶/服務(wù)器架構(gòu)的體系結(jié)構(gòu),具有服務(wù)器端和客戶端,其中服務(wù)器可以分為兩個(gè)部分:Jabber 服務(wù)器和數(shù)據(jù)庫(kù)系統(tǒng)。服務(wù)器采用基于 Jabber 的開(kāi)源服務(wù)器WildFire 3.0.1,用戶數(shù)據(jù)和系統(tǒng)信息的存

4、儲(chǔ)由 MySQL 數(shù)據(jù)庫(kù)實(shí)現(xiàn),客戶端J2ME 進(jìn)行開(kāi)發(fā)。 2.2Jabber 與 WildFire 服務(wù)器Jabber 就像 ICQ,MSN 一樣,是一個(gè)基于 Internet 的即時(shí)通訊系統(tǒng),但是同這些即時(shí)通訊軟件不同的是,它是一個(gè)開(kāi)放的即時(shí)通訊系統(tǒng),也是一個(gè)基于 XML Stream 的協(xié)議,用于在 Internet 上的兩個(gè)實(shí)體之間交換信息,現(xiàn)場(chǎng)狀態(tài)(presence)和其它的結(jié)構(gòu)化信息。你可以自己架設(shè)自己的 Jabber 服務(wù)器,使用不同的 Jabber Client軟件,而不像 ICQ 或 MSN,依賴于 AIM 或 MSN 的服務(wù)器和軟件。IETF 已經(jīng)將Jabber 定為即時(shí)通訊

5、和現(xiàn)場(chǎng)技術(shù)的標(biāo)準(zhǔn)協(xié)議,稱(chēng)為 XMPP(ExtensibleMessaging and Presence Protocol),相關(guān)的規(guī)范是 RFC3920 和RFC3921。Wildfire 是一款獲得許多榮譽(yù)的 Jabber 即時(shí)消息服務(wù)器,采用 Java 開(kāi)發(fā),可以使用任何支持 Jabber 的客戶端如 psi、gaim 等連接。其主要特點(diǎn)有易于安裝、管理、定制以及和其它應(yīng)用程序集成,有基于 GPL 的開(kāi)放源代碼版本和商業(yè)版本。 2.3J2ME 介紹J2ME 是 SUN 公司在小型設(shè)備上的開(kāi)發(fā)平臺(tái),它的主要技術(shù)優(yōu)勢(shì)在于:良好的跨平臺(tái)能力與 J2EE 后端無(wú)縫的結(jié)合能力和 Java 語(yǔ)言的優(yōu)良

6、特色,如簡(jiǎn)單安全以及現(xiàn)有的 Java 平臺(tái)上的開(kāi)發(fā)工具。 3關(guān)鍵技術(shù)研究 3.1與 MSN、OICQ 系統(tǒng)通訊Jabber服務(wù)器中的 Transport 組件是溝通 Jabber 和非 Jabber 協(xié)議之間差異的組件。當(dāng)使用 Jabber 服務(wù)器訪問(wèn)非 Jabber 系統(tǒng)時(shí),Transport 組件隱藏了系統(tǒng)之間的差異,這樣,用戶在訪問(wèn)的時(shí)候根本感覺(jué)不到自己訪問(wèn)的是外部的系統(tǒng)。但是,當(dāng)用戶第一次訪問(wèn)非 Jabber 系統(tǒng)時(shí),需要向 Jabber transport 注冊(cè),注冊(cè)內(nèi)容就是用戶名和將要使用的外部系統(tǒng)之類(lèi)的信息。一旦注冊(cè)成功之后,就可以在外部系統(tǒng)上發(fā)送和接收消息。 3.2網(wǎng)絡(luò)連接策略

7、本文的移動(dòng)即時(shí)通訊系統(tǒng)支持 Http和 Socket 兩種連接方式。其中,Socket 連接方式為默認(rèn)連接方式,但是不同品牌和型號(hào)的手機(jī)以及中國(guó)移動(dòng)各地區(qū)網(wǎng)絡(luò)對(duì) Socket 的支持有差異,所以當(dāng)Socket 連接不被支持的時(shí)候系統(tǒng)會(huì)自動(dòng)切換到 HTTP 連接方式。此外,在國(guó)際上,使用 Http 連接方式通常只有一種 GPRS 接入方式,但中國(guó)有CMWAP 和 CMNET 兩種方式。其中 CMNET 擁有完全的 Internet 訪問(wèn)權(quán),而中國(guó)移動(dòng)對(duì) CMWAP 做了一定的限制,主要表現(xiàn)在 CMWAP 接入時(shí)只能訪問(wèn) GPRS 網(wǎng)絡(luò)內(nèi)的IP(72:80),而無(wú)法通過(guò)路由訪問(wèn) I

8、nternet(少數(shù)地區(qū)的移動(dòng)網(wǎng)絡(luò)可能不存在這一限制)。我們用 CMWAP 訪問(wèn) Internet 就是通過(guò) WAP 網(wǎng)關(guān)協(xié)議或它提供的 HTTP 代理服務(wù)實(shí)現(xiàn)的。 3.3拍照及照片傳送技術(shù)客戶端通過(guò) mobilemediaapi(mmapi)中的 videocontrol 來(lái)實(shí)現(xiàn),通過(guò)調(diào)用videocontrol 的 getsnapshot()方法實(shí)現(xiàn)。然后,對(duì)數(shù)據(jù)進(jìn)行 base64 編碼轉(zhuǎn)換為字符串嵌入 xml 流;服務(wù)器收到收據(jù)后解碼并利用 J2ME 的 Image 類(lèi)還原圖像。 3.4消息傳遞中編碼考慮在系統(tǒng)實(shí)際開(kāi)發(fā)中,我們通常面臨不同的移動(dòng)終端,有些設(shè)備的編碼就必須特殊處理。比如,本

9、文采用 NOKIA 的S60 平臺(tái)機(jī)型,NOKIA S60 手機(jī)在接收 ISO8859-1 編碼時(shí)不是與大多數(shù)手機(jī)那樣直接以 UTF-8 編碼方式接收,它只支持 ISO8859-1 方式接收。但是這種方式接收后,封裝在 ISO8859-1 流中的 xml 的數(shù)據(jù)會(huì)又一次被進(jìn)行 ISO8859-1 編碼轉(zhuǎn)換,等于是在對(duì)這條封裝在 ISO8859-1 流中的 xml 語(yǔ)句又封裝了一個(gè) ISO8859-1 的外殼。所以客戶端要想得到 UTF-8 的數(shù)據(jù),必須進(jìn)行兩次編碼轉(zhuǎn)換,首先剝掉這層 ISO8859-1 的外殼,得到正常的 ISO8859-1 數(shù)據(jù)流,才能向其它機(jī)型那樣進(jìn)行正常的 ISO8859

10、-1 向 UTF-8 編碼的轉(zhuǎn)換。 4關(guān)鍵模塊實(shí)現(xiàn)本文實(shí)現(xiàn)的移動(dòng)即時(shí)通訊系統(tǒng)支持群組消息模式。在群組消息模塊中,登錄的注冊(cè)用戶可以通過(guò)手機(jī)來(lái)實(shí)現(xiàn)傳統(tǒng) PC 平臺(tái)的聊天室功能。Jabber的群組聊天或會(huì)議機(jī)制允許多人同時(shí)進(jìn)行交流,這是對(duì)傳統(tǒng)即時(shí)通訊功能的擴(kuò)展。具體的業(yè)務(wù)流程是首先由用戶讀取群組列表選擇登錄目標(biāo)。然后,進(jìn)行登錄并將用戶 ID 注冊(cè)到這個(gè)組中。完成注冊(cè)后,系統(tǒng)會(huì)將本組內(nèi)的其它成員信息(比如成員列表)發(fā)送到當(dāng)前用戶的客戶端上。這時(shí)系統(tǒng)的會(huì)話組件已經(jīng)為這個(gè)群組內(nèi)地成員做好了消息傳遞準(zhǔn)備,也就是說(shuō)某個(gè)用戶的信息可以被服務(wù)器傳遞到群組中的每一個(gè)成員。具體的實(shí)現(xiàn)過(guò)程如下: 4.1讀取群組列表名

11、單當(dāng)用戶進(jìn)入聊天室模塊時(shí),客戶端首先發(fā)送一個(gè) xml 語(yǔ)句向服務(wù)器發(fā)出請(qǐng)求,服務(wù)器收到后返回一個(gè) xml 語(yǔ)句,客戶端解析后讀出聊天室列表,并進(jìn)行屏幕顯示,供用戶選擇。 發(fā)送的 xml 語(yǔ)句: 接收的 xml 語(yǔ)句: 論文出處(作者):4.2用戶的在群組中的登記需要加入一個(gè)指定的群組時(shí)(它的 ID 已經(jīng)由用戶指定或在接到聊天邀請(qǐng)時(shí)確定),首先發(fā)送一個(gè)元素。注意在發(fā)送中不要添加 resource 名,這是老的 groupchat 的做法,現(xiàn)在的conference 已經(jīng)不采用了。如果你需要向下兼容性,可以發(fā)送 resourcename。接下來(lái),發(fā)送包含 xmlns=”Jabber:iq:brow

12、se”的,這個(gè)請(qǐng)求包含了一個(gè)或多個(gè)元素,它指明了你希望加入的會(huì)議的別名。一旦你接到一個(gè)成功回應(yīng),也就意味著你已經(jīng)加入這個(gè)聊天室??蛻舳私邮粘蓡T信息語(yǔ)句: 163 當(dāng)客戶端開(kāi)始接收信息時(shí),就意味指著請(qǐng)求成功了,那么客戶端需要建立一個(gè) GroupChat 實(shí)例,并且不斷將接收的信息添加到這個(gè)實(shí)例中。 4.3群組成員列表的讀取每個(gè)群組都有成員列表,表明當(dāng)前在群組中的人員。它會(huì)隨著人員加入或離開(kāi)而改變。本系統(tǒng)通過(guò)在 GroupChat 類(lèi)中設(shè)置一個(gè) MUCUser 的屬性,它是一個(gè) Vector 的變量,每一個(gè)元素都是一個(gè) MUCUser 實(shí)例,存放著每一個(gè)聊天室成員的個(gè)人信息,如 jid、昵稱(chēng)、等級(jí)

13、、級(jí)別等??蛻舳嗣渴盏揭粭l presence 語(yǔ)句,解析后都會(huì)更新這個(gè)屬性。 群組成員的 presence 語(yǔ)句: 2 4 4.4群組中即時(shí)消息的發(fā)送一般來(lái)說(shuō)群組消息傳遞時(shí)有兩種最基本的形式,一種是公共消息,就是對(duì)所有人發(fā)送的信息,這種信息當(dāng)前群內(nèi)的所有成員都可以收到;另一種是私有信息,這種信息其實(shí)是群中的點(diǎn)對(duì)點(diǎn)消息傳遞,也就是說(shuō)雖然是在群中,但服務(wù)器只會(huì)將其發(fā)送給群組中指定的成員。在本系統(tǒng)的群組消息模塊中,成功的實(shí)現(xiàn)了這兩種方式。群組消息的格式與點(diǎn)對(duì)點(diǎn)消息傳遞的格式基本相同,它們都是通過(guò) Message 對(duì)象進(jìn)行封裝的。它們的區(qū)別在于 type類(lèi)型一個(gè)是groupchat,而另一個(gè)是chat

14、。服務(wù)器端收到消息后,會(huì)根據(jù) type 的值來(lái)判斷這條消息是否群組消息。下面各給出一條 xml 語(yǔ)句來(lái)說(shuō)明:公共消息格式: 你好 私有消息格式: hello 在 Gm 即時(shí)通訊系統(tǒng)中,對(duì)于客戶端來(lái)說(shuō),一個(gè)聊天室就是一個(gè) GroupChat 類(lèi)型的對(duì)象,那么加入一個(gè)聊天室,本質(zhì)上就是創(chuàng)建一個(gè) GroupChat 對(duì)象的實(shí)例。對(duì) GroupChat 實(shí)例的訪問(wèn)我們可以群組消息傳遞的所有功能。GroupChat 類(lèi)繼承了 Chat 類(lèi),而 Chat 類(lèi)又繼承至Conversation 類(lèi),可以說(shuō)它是一個(gè)由一個(gè)基本會(huì)話類(lèi)不斷擴(kuò)展而來(lái)的,即一個(gè)功能更強(qiáng)大的會(huì)話類(lèi)。它的最主要的功能就是對(duì)當(dāng)前聊天室內(nèi)的成員

15、以及他們的發(fā)言進(jìn)行管理,比如添加新的信息(新的發(fā)言)、成員的變更等等。GroupChat還有一個(gè)非常重要的方法,就是 broadcast()方法。通過(guò)這個(gè)方法將用戶的 jid信息,說(shuō)話的對(duì)象,發(fā)言的內(nèi)容等封裝為一個(gè)標(biāo)準(zhǔn)的 Message xml 語(yǔ)句,然后交給通訊線程發(fā)送出去。圖 1、圖 2 是軟件運(yùn)行的部分功能截圖。圖 1群組消息傳遞截圖圖 2好友列表讀取顯示截圖5結(jié)論本系統(tǒng)不但實(shí)現(xiàn)了傳統(tǒng)即時(shí)通訊的文本信息傳遞功能,還具備了拍照、傳遞照片、群組聊天以及查看資訊等功能。另外,針對(duì)國(guó)內(nèi)手機(jī)網(wǎng)絡(luò)和用戶的特點(diǎn)和現(xiàn)狀,系統(tǒng)對(duì)網(wǎng)絡(luò)連接進(jìn)行了優(yōu)化。它能夠支持 Socket 和Http 兩種網(wǎng)絡(luò)連接方式,并

16、且當(dāng)客戶端發(fā)現(xiàn)當(dāng)前網(wǎng)絡(luò)和手機(jī)不支持 Socket 連接時(shí),能夠自動(dòng)切換到 Http 連接方式。此外,本文主要工作在Nokia、Motorola、SE 等品牌主流機(jī)型都得到實(shí)現(xiàn),整個(gè)系統(tǒng)目前運(yùn)轉(zhuǎn)正常,現(xiàn)注冊(cè)用戶已超過(guò) 50 萬(wàn),取得了一定的社會(huì)和經(jīng)濟(jì)效益。 參考文獻(xiàn) 1.Jabber, Inc. Advantages of Jabber as a Platform for DevelopingCollaborative Applications, May 2002 2. Jabber, Inc. The Presence Valueof Presence: Leveraging your Instant Messaging Investment. August,2003 3. Shigeoka I. Instant Messaging in Java. 2002 4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論