openfire及xmpp簡單介紹

1、oprenfirehtml

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

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

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

2、XMPP(Jabber)協議網絡

  1介紹 架構

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

  二、定義框架

    XMPP(可擴展消息處理現場協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線現場探測。它在促進服務器之間的準即時操做。這個協議可能最終容許因特網用戶向因特網上的其餘任何人發送即時消息,即便其操做系統和瀏覽器不一樣。 分佈式

    XMPP的前身是Jabber, 一個開源形式組織產生的網絡即時通訊協議。XMPP目前被IETF國際標準組織完成了標準化工做。標準化的核心結果分爲兩部分; 操作系統

    核心的XML流傳輸協議 

    基於XML FreeEIM流傳輸的即時通信擴展應用 

    XMPP的核心XML流傳輸協議的定義使得XMPP可以在一個比以往網絡通訊協議更規範的平臺上。藉助於XML易於解析和閱讀的特性,使得XMPP的協議可以很是漂亮。 

    XMPP的即時通信擴展應用部分是根據IETF在這以前對即時通信的一個抽象定義的,與其餘業已獲得普遍使用的即時通信協議,諸如AIM,QQ等有功能完整,完善等先進性。 

    在IETF 中,把IM協議劃分爲四種協議,即時信息和出席協議(Instant Messaging and Presence Protocol, IMPP)、出席和即時信息協議(Presence and Instant Messaging Protocol, PRIM)、針對即時信息和出席擴展的會話發起協議(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions, SIMPLE),以及可擴展的消息出席協議(XMPP)。最初研發IMPP 也是爲了建立一種標準化的協議,可是今天,IMPP 已經發展成爲基本協議單元,定義全部即時通訊協議應該支持的核心功能集。

  3、 XMPP協議的優勢

    a. XMPP 協議是公開的,由JSF開源社區組織開發的。

    b. XMPP 協議具備良好的擴展性。

    c. 分佈式的網絡架構。

    d. XMPP 具備很好的彈性。

    e. 安全性。

  四、XMPP協議網絡架構

    XMPP是一個典型的C/S架構,而不是像大多數即時通信軟件同樣,使用P2P客戶端到客戶端的架構,也就是說在大多數狀況下,當兩個客戶端進行通信時,他們的消息都是經過服務器傳遞的(也有例外,例如在兩個客戶端傳輸文件時).採用這種架構,主要是爲了簡化客戶端,將大多數工做放在服務器端進行,這樣,客戶端的工做就比較簡單,並且,當增長功能時,多數是在服務器端進行.XMPP服務的框架結構以下圖所示.XMPP中定義了三個角色,XMPP客戶端,XMPP服務器、網關.通訊可以在這三者的任意兩個之間雙向發生.服務器同時承擔了客戶端信息記錄、鏈接管理和信息的路由功能.網關承擔着與異構即時通訊系統的互聯互通,異構系統能夠包括SMS(短信)、MSN、ICQ等.基本的網絡形式是單客戶端經過TCP/IP鏈接到單服務器,而後在之上傳輸XML,工做原理是: 

    (1) ?點鏈接到服務器; 

    (2) 服務器利用本地目錄系統中的證書對其認證; 

    (3) ?點指定目標地址,讓服務器告知目標狀態; 

    (4) 服務器查找、鏈接並進行相互認證; 

    (5) ?點之間進行交互;

  5、 XMPP消息格式

    XMPP中定義了3個頂層XML元素: Message、Presence、IQ,下面針對這三種元素進行介紹。

    <Message>

    用於在兩個jabber用戶之間發送信息。Jsm(jabber會話管理器)負責知足全部的消息,無論目標用戶的狀態如何。若是用戶在線jsm當即提交;不然jsm就存儲。

    To : 標識消息的接收方。

    from : 指發送方的名字或標示(id)

    Text: 此元素包含了要提交給目標用戶的信息。

    結構以下所示:

    <message to= ‘lily@jabber.org/contact’ type =’chat’>

    <body> 你好,在忙嗎</body>

    </message>

    <Presence>

    用來代表用戶的狀態,如:online、away、dnd(請勿打擾)等。當用戶離線或改變本身的狀態時,就會在stream的上下文中插入一個Presence元素,來代表自身的狀態.結構以下所示:

    <presence>

    From =‘lily @ jabber.com/contact’

    To = ‘yaoman @ jabber.com/contact'

    <status> Online </status>

    </presence>

    <presence>元素能夠取下面幾種值:

    Probe: 用於向接受消息方法發送特殊的請求

    subscribe: 當接受方狀態改變時,自動向發送方發送presence信息。

    < IQ >

    一種請求/響應機制,從一個實體從發送請求,另一個實體接受請求,並進行響應.例如,client在stream的上下文中插入一個元素,向Server請求獲得本身的好友列表,Server返回一個,裏面是請求的結果.

    <iq > 主要的屬性是type。包括:

    Get :獲取當前域值。

    Set :設置或替換get查詢的值。

    Result :說明成功的響應了先前的查詢。

    Error: 查詢和響應中出現的錯誤。

    結構以下所示:

    <iq from =‘lily @ jabber.com/contact’id=’1364564666’ Type=’result’>

 

詳情參見:http://www.cnblogs.com/hoojo/archive/2012/06/18/2553975.html    謝謝!

相關文章
相關標籤/搜索