今年開始到5月都在學習和使用openfire進行公司新的項目開發,這裏正好整理一下學習筆記。 java
openfire是什麼? node
Openfire 採用Java開發,開源的實時協做(RTC)服務器基於XMPP(Jabber)協議。Openfire安裝和使用都很是簡單,並利用Web進行管理。單臺服務器可支持上萬併發用戶。 api
安裝openfire,這個網絡上面教程不少,安裝也很方便,只要有jre環境就ok,就很少作說明了。 服務器
openfire採用xmpp協議,底層怎麼交互能夠不用研究,反正就是按xml的協議進行消息的交互。xml的好處就是擴展性強,缺點應該就是冗餘 網絡
公司用的java開發,這裏就涉及到openfire提供的api包,在java是smack,這是一個封裝了不少消息,事件的包,使開發openfire變的至關快速。 併發
再講解一些openfire中的一些基本概念: dom
(1) 名(domain identifier);openfire服務器的名稱 ide
(2) 點(node identifier);用戶的名稱 學習
(3) 源(resource identifier).資源,能夠理解爲能夠經過多種軟件鏈接openfire,那個軟件的標示 spa
3個基礎包
Presence:出席包,用來告知服務器是上線仍是下線等狀態信息
用枚舉類型Presence.Type的值表示: U:<presence from='alice@example.com/work'to='support@workgroup.example.com'>
U:</presence>
Message:消息包
Message.Type:
chat:聊天
groupchat:羣聊
headline:在線消息(對方若是不在線不會保存)
< message to= ‘lily@jabber.org/contact’ type =’chat’ >
< body > 你好,在忙嗎< /body >
< /message >
IQ
一種請求/響應機制,從一個實體從發送請求,另一個實體接受請求,並進行響應.例如,client在stream的上下文中插入一個元素,向Server請求獲得本身的好友列表,Server返回一個,裏面是請求的結果.
< iq > 主要的屬性是type。包括:
Get :獲取當前域值。
Set :設置或替換get查詢的值。
Result :說明成功的響應了先前的查詢。
Error: 查詢和響應中出現的錯誤。
結構以下所示:
< iq from =‘lily @ jabber.com/contact’id=’1364564666’ Type=’result’>
主要的幾個知識點先介紹,由於這些基礎的概念網絡上面不少就很少介紹了。
接下去會介紹一下本身在項目中用到的:系統提供的插件fastpath,以及整個的協議交互,還有本身開發插件,jsjac這幾個部分。