国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
基于即時(shí)通信和LBS技術(shù)的位置感知服務(wù)(二):XMPP協(xié)議總結(jié)以及開源解決方案

在《基于即時(shí)通信和LBS技術(shù)的位置感知服務(wù)(一):提出問題及解決方案》一文中,提到嘗試使用XMPP協(xié)議來(lái)實(shí)現(xiàn)即時(shí)通信。本文將對(duì)XMPP協(xié)議框架以及相關(guān)的C/S架構(gòu)進(jìn)行介紹,協(xié)議的底層實(shí)現(xiàn)不再本文的討論范圍。

一、什么是XMPP?

介紹XMPP之前,我們先來(lái)聊聊GTalk。GTalk是Google推出的IM(Instant Messaging,即時(shí)通訊)軟件,類似于QQ和MSN。從技術(shù)角度來(lái)說(shuō),GTalk與QQ和MSN的差異是使用了不同的通訊協(xié)議,QQ使用了自己的私有協(xié)議(未公開),MSN也使用了自己的私有協(xié)議。而GTalk使用了XMPP(Extensible Messageing and Presence Protocol,可擴(kuò)展消息與存在協(xié)議),這種通訊協(xié)議是一種公開的協(xié)議,有很多IM都使用了XMPP。

XMPP是目前主流的四種IM協(xié)議之一,其他三種協(xié)議分別為:IMPP(Instant Messaging And Presence Protocol)、PRIM(Presence and Instant Messaging Protocol)和SIMPLE(SIP for Instant Messaging and Presence Leveraging Extensions)。
在這四種協(xié)議中,XMPP是最靈活的。XMPP是一種基于XML的協(xié)議,它繼承了XML的靈活性和可擴(kuò)展性。因此,基于XMPP的應(yīng)用也同樣具有超強(qiáng)的靈活性和可擴(kuò)展性。經(jīng)過擴(kuò)展后的XMPP可以通過發(fā)送擴(kuò)展的信息來(lái)處理用戶的需求,以及在XMPP的頂端建立如內(nèi)容發(fā)布系統(tǒng)和基于地址的服務(wù)等應(yīng)用程序。而且,XMPP包含了針對(duì)服務(wù)器端的軟件協(xié)議,使之能與另一端進(jìn)行通話,這使得開發(fā)者更容易建立客戶應(yīng)用程序或給一個(gè)系統(tǒng)添加功能。

二、XMPP協(xié)議網(wǎng)絡(luò)架構(gòu)

XMPP 的特點(diǎn)是將復(fù)雜性從客戶端轉(zhuǎn)移到服務(wù)器端。這使得客戶端編寫變得非常容易,更新系統(tǒng)功能也同樣變得容易。XMPP中定義了三個(gè)角色:XMPP客戶端、XMPP服務(wù)器、網(wǎng)關(guān)。

客戶端:通過 TCP 套接字與XMPP 服務(wù)器進(jìn)行通信

服務(wù)器:同時(shí)承擔(dān)了客戶端信息記錄、連接管理和信息的路由功能

網(wǎng)關(guān):承擔(dān)著與異構(gòu)即時(shí)通信系統(tǒng)的互聯(lián)互通

三、XMPP協(xié)議的地址格式(標(biāo)志)

每個(gè)客戶端需要擁有一個(gè)地址標(biāo)識(shí)用于定位,XMPP 中稱之為 JID (Jabber ID)。地址標(biāo)識(shí)的格式如下

[ node "@" ] domain [ "/" resource ]

例如:

charley@gmail.com/spark

格式與 Email 地址格式類似,但增添了 resource 項(xiàng)(非必需的)。上述例子可以解釋為:在 gmail.com 服務(wù)器注冊(cè)的 charley用戶,且使用 spark客戶端軟件登錄。資源(resource )只用來(lái)識(shí)別屬于用戶的位置或設(shè)備等,一個(gè)用戶可以同時(shí)以多種資源與同一個(gè)XMPP服務(wù)器連接(說(shuō)白了就是用于支持同一賬號(hào)的多客戶端登錄)。

用戶地址標(biāo)識(shí)的認(rèn)證由提供 XMPP 服務(wù)的服務(wù)器執(zhí)行。例如,注冊(cè)于 gmail 服務(wù)器的賬號(hào)由 gmail 服務(wù)器進(jìn)行驗(yàn)證。其他服務(wù)器發(fā)往 gmail.com 域名的數(shù)據(jù)包均通過域名查詢與服務(wù)間驗(yàn)證后發(fā)往 gmail 服務(wù)器,而不用考慮 gmail 服務(wù)器與下屬賬號(hào)間的通信。

四、為什么要采用XMPP的解決方案(主要列出優(yōu)點(diǎn),缺點(diǎn)就不列了,實(shí)際上我們關(guān)系也不大)

1. 開放—XMPP協(xié)議是自由、開放、公開的,并且易于了解。而且在客戶端、服務(wù)器、組件、源碼庫(kù)等方面,都已經(jīng)各自有多種實(shí)現(xiàn)。

2. 標(biāo)準(zhǔn)—互聯(lián)網(wǎng)工程工作小組(IETF)已經(jīng)將Jabber的核心XML流協(xié)議以XMPP之名,正式列為認(rèn)可的實(shí)時(shí)通信及Presence技術(shù)。而XMPP的技術(shù)規(guī)格已被定義在RFC 3920及RFC 3921。任何IM供應(yīng)商在遵循XMPP協(xié)議下,都可與Google Talk實(shí)現(xiàn)連接。

3. 證實(shí)可用—第一個(gè)Jabber(現(xiàn)在XMPP)技術(shù)是Jeremie Miller在1998年開發(fā)的,現(xiàn)在已經(jīng)相當(dāng)穩(wěn)定;數(shù)以百計(jì)的開發(fā)者為XMPP技術(shù)而努力。今日的互聯(lián)網(wǎng)上有數(shù)以萬(wàn)計(jì)的XMPP服務(wù)器運(yùn)作著,并有數(shù)以百萬(wàn)計(jì)的人們使用XMPP實(shí)時(shí)傳訊軟件。

4. 分布式—XMPP網(wǎng)絡(luò)的架構(gòu)和電子郵件十分相像;XMPP核心協(xié)議通信方式是先創(chuàng)建一個(gè)stream,XMPP以TCP傳遞XML數(shù)據(jù)流,沒有中央主服務(wù)器。任何人都可以運(yùn)行自己的XMPP服務(wù)器,使個(gè)人及組織能夠掌控他們的實(shí)時(shí)傳訊體驗(yàn)。

5. 安全—任何XMPP協(xié)議的服務(wù)器可以獨(dú)立于公眾XMPP網(wǎng)絡(luò)(例如在企業(yè)內(nèi)部網(wǎng)絡(luò)中),而使用SASL及TLS等技術(shù)的可靠安全性,已內(nèi)置于核心XMPP技術(shù)規(guī)格中。

6. 可擴(kuò)展—XML命名空間的威力可使任何人在核心協(xié)議的基礎(chǔ)上建造客制化的功能;為了維持通透性,常見的擴(kuò)展由XMPP Standards Foundation。

下面幾點(diǎn)更加實(shí)際

7. 跨平臺(tái)—客戶端只要基于XMPP協(xié)議,不管是什么平臺(tái)(包括不同的移動(dòng)終端)都可以互聯(lián)互通。

8. 彈性佳—XMPP除了可用在實(shí)時(shí)通信的應(yīng)用程序,還能用在網(wǎng)絡(luò)管理、內(nèi)容供稿、協(xié)同工具、文件共享、游戲、遠(yuǎn)程系統(tǒng)監(jiān)控等。

9. 多樣性—用XMPP協(xié)議來(lái)建造及布署實(shí)時(shí)應(yīng)用程序及服務(wù)的公司及開放源代碼計(jì)劃分布在各種領(lǐng)域;用XMPP技術(shù)開發(fā)軟件,資源及支持的來(lái)源是多樣的,使得使你不會(huì)陷于被“綁架”的困境。

五、XMPP協(xié)議的Java開源解決方案

Openfire+Smack+Spark 是由jivesoftware(http://www.jivesoftware.com/)貢獻(xiàn)的一個(gè)Java 開源的解決方案,方便用戶搭建自己的服務(wù)以及編寫基于Smack API的通訊實(shí)現(xiàn)。

下載地址如下:

http://www.igniterealtime.org/downloads/index.jsp

1. Openfire服務(wù)器

Openfire 是基于XMPP 協(xié)議的服務(wù)器端的一個(gè)Java實(shí)現(xiàn),雖然當(dāng)兩個(gè)用戶連接后,可以通過點(diǎn)對(duì)點(diǎn)的方式來(lái)發(fā)送消息,但是用戶還是需要連接到服務(wù)器來(lái)獲取一些連接信息和通信信息的,所以服務(wù)器端是必須要實(shí)現(xiàn)的。Openfire 支持插件開發(fā)。

2. Smack

Smack 是一個(gè)XMPP 協(xié)議的Java 實(shí)現(xiàn),提供一套可擴(kuò)展的客戶端調(diào)用API。我們后面的實(shí)現(xiàn)依賴與這套API。

3. Spark和SparkWeb

Spark 提供了客戶端一個(gè)基本的現(xiàn),并提出了一個(gè)很好的插件架構(gòu),用戶可以進(jìn)行插件開發(fā)。SparkWeb是基于Web的客戶端。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Google為何選擇Jabber
XMPP通訊過程
基于XMPP協(xié)議的Android即時(shí)通信系
XMPP協(xié)議的原理介紹
基于XMPP協(xié)議的手機(jī)多方多端即時(shí)通訊方案
XMPP協(xié)議學(xué)習(xí)(2)--Java例子(與GoogleTalk互通)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服