XMPP - 框架

XMPP 與其他的應(yīng)用層協(xié)議(如SMTP)有著相似之處仆葡。在這些架構(gòu)中帕膜,具有惟一名稱的客戶機(jī)通過相關(guān)的服務(wù)器與另外一個具有惟一名稱的客戶機(jī)進(jìn)行通信伶椿。每個客戶機(jī)執(zhí)行客戶機(jī)的協(xié)議表單月褥,而服務(wù)器在表單中提供路由功能等浊。
圖 1 說明了這個簡單的架構(gòu)欲诺。
在這個例子中抄谐,每個客戶機(jī)都是同一個域名(discovery.nasa.guv)的一部分。
圖 1. 由一個服務(wù)器和兩個客戶機(jī)組成的簡單的 XMPP 架構(gòu)由一個服務(wù)器和兩個客戶機(jī)組成的簡單 XMPP 架構(gòu)的圖表服務(wù)器還可以針對不同域之間(例如扰法,在 discovery.nasa.guv 和 europa.nasa.guv 之間)的路由進(jìn)行通信斯稳。此外,網(wǎng)關(guān)可用于在外部消息傳遞域和協(xié)議之間進(jìn)行轉(zhuǎn)換迹恐。


圖 2 中的示例顯示了一個 XMPP 網(wǎng)絡(luò)挣惰,網(wǎng)關(guān)通往一個短信服務(wù)(SMS)域和一個 SMTP 域。在這種情況下殴边,網(wǎng)關(guān)大多數(shù)都是被用來在 IM 協(xié)議(例如憎茂,在 XMPP 和 Internet 中繼聊天(IRC))之間進(jìn)行轉(zhuǎn)換。作為一個可擴(kuò)展的協(xié)議锤岸,XMPP 對于在不同的端點(diǎn)協(xié)議間提供統(tǒng)一連接性來說是一個理想的中樞協(xié)議竖幔。XMPP 網(wǎng)關(guān)允許終止一個給定的客戶端到服務(wù)器的會話,并且向目標(biāo)端點(diǎn)協(xié)議發(fā)起一個新的會話(同時進(jìn)行必要的協(xié)議轉(zhuǎn)換)是偷。
圖 2. 包含了 XMPP 網(wǎng)關(guān)的更為復(fù)雜的 XMPP 架構(gòu)更為復(fù)雜的 XMPP 架構(gòu)圖拳氢,包含了連接到 SMS 和 SMTP 客戶端和服務(wù)器的 XMPP 網(wǎng)關(guān)回頁首XMPP 中的地址XMPP 中的地址(即 Jabber ID[JID])與標(biāo)準(zhǔn)電子郵件地址相似,但有著幾個顯著的差別蛋铆。JID 包含一個可選節(jié)點(diǎn)馋评、一個域和一個可選資源:[ node "@" ] domain [ "/" resource ]最常見的用法就是定義一個 IM 用戶(類似電子郵件地址),比如 DavidBowman@discovery.nasa.guv刺啦。用戶能夠多次登錄 XMPP 服務(wù)器留特,而在這個例子中,資源能夠表示位置玛瘸。例如蜕青,示例用戶可能有一個主終端(DavidBowman@discovery.nasa.guv/terminal)JID 和另外一個來自 EVA pod(DavidBowman@discovery.nasa.guv/eva_pod1)的 JID。因此糊渊,能夠找到某個特定位置右核,或離開此位置并找到用戶,不管用戶在哪個位置登錄渺绒『睾龋回頁首XMPP 協(xié)議XMPP 是一個相對簡單的協(xié)議菱鸥,它通過 XML 消息出現(xiàn)在 TCP 套接字上。異步通信發(fā)生在 XML 流中搜变,并帶有 XML 節(jié)(stanza)采缚。XML 流 是封裝了兩個實(shí)體間的 XML 信息交換的容器。XML 流傳遞 XML 節(jié)挠他,這些 XML 節(jié)是一些分散的信息單元扳抽。例如,在 XMPP 中使用 XML 節(jié)傳遞消息(IM 用戶間的文本)以及到場信息殖侵。為說明這些概念贸呢,請看一個在兩個客戶端之間使用 XMPP 進(jìn)行 IM 通信的簡單示例。

圖 3 演示了兩個實(shí)體之間的簡單會話拢军。注意楞陷,至少有一個服務(wù)器會出現(xiàn)在會話中(在這個例子中,因?yàn)閮蓚€客戶端存在于同一個域中茉唉,所以準(zhǔn)確地說固蛾,只有一個服務(wù)器)。在 圖 3 中度陆,左邊的客戶端是發(fā)起實(shí)體(發(fā)起兩個實(shí)體間的 XMPP 通信)艾凯。XML 流使用 to 屬性來識別接收域(以及定義 XML 名稱空間)。右邊的接收客戶端 接收 XML 流并使用 XML 流響應(yīng)(在這個例子中懂傀,使用 from 屬性)進(jìn)行回應(yīng)趾诗。在這個階段,可以進(jìn)行幾個不同的協(xié)商(如驗(yàn)證和加密)蹬蚁。請忽略這部分討論(例外情況是當(dāng) IM 客戶端出現(xiàn)在不同的域中進(jìn)行服務(wù)器到服務(wù)器通信)恃泪。(請查看 圖 3 的文字版本。)圖 3. 示例(簡化的)XMPP 通信示例(簡化的)XMPP 通信圖圖 3 中的 XML 流的下一步是進(jìn)行消息傳遞犀斋。這個通信在消息節(jié)中進(jìn)行贝乎,并且包括了源和目標(biāo) XMPP 地址(from 和 to)、使用的語言以及節(jié)正文中的消息闪水。對方用其自己的消息進(jìn)行響應(yīng)糕非,關(guān)鍵區(qū)別是源和目標(biāo) XMPP 地址。最后球榆,發(fā)出流關(guān)閉消息(在連接的兩端進(jìn)行)以關(guān)閉 XML 流。任何一邊都可能返回一個錯誤禁筏,如下面所定義持钉。


在本例中,對方發(fā)送了一個無效的 XML 流和節(jié)篱昔。盡管這個示例展示了簡單的 IM 通信每强,但很容易就能了解消息節(jié)是如何轉(zhuǎn)換成 RPC 消息的始腾,同時負(fù)載了來自對等協(xié)商的安全問題。您可以把函數(shù)注冊為節(jié)點(diǎn)空执,以創(chuàng)建一個動態(tài)的 Web 服務(wù)框架浪箭,而不是對域中的用戶進(jìn)行注冊。
文/YZhi(簡書作者)原文鏈接:http://www.reibang.com/p/af87ff15bfe3著作權(quán)歸作者所有辨绊,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)奶栖,并標(biāo)注“簡書作者”。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末门坷,一起剝皮案震驚了整個濱河市宣鄙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌默蚌,老刑警劉巖冻晤,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绸吸,居然都是意外死亡鼻弧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門锦茁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攘轩,“玉大人,你說我怎么就攤上這事蜻势〕糯蹋” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵握玛,是天一觀的道長够傍。 經(jīng)常有香客問我,道長挠铲,這世上最難降的妖魔是什么冕屯? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮拂苹,結(jié)果婚禮上安聘,老公的妹妹穿的比我還像新娘。我一直安慰自己瓢棒,他們只是感情好浴韭,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脯宿,像睡著了一般念颈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上连霉,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天榴芳,我揣著相機(jī)與錄音嗡靡,去河邊找鬼。 笑死窟感,一個胖子當(dāng)著我的面吹牛讨彼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柿祈,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哈误,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谍夭?” 一聲冷哼從身側(cè)響起黑滴,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎紧索,沒想到半個月后袁辈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡珠漂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年晚缩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媳危。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡荞彼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出待笑,到底是詐尸還是另有隱情鸣皂,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布暮蹂,位于F島的核電站寞缝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仰泻。R本人自食惡果不足惜荆陆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望集侯。 院中可真熱鬧被啼,春花似錦、人聲如沸棠枉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辈讶。三九已至汹碱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荞估,已是汗流浹背咳促。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勘伺,地道東北人跪腹。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像飞醉,于是被迫代替她去往敵國和親冲茸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容