freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

xmpp協議及其服務器端的openfire插件開發(fā)-文庫吧

2025-09-24 08:26 本頁面


【正文】 XML 在 TCP 套接字的 5222 端口進行通信,而不需要客戶端之間直接進行通信。 基本的 XMPP 客戶端必須實現以下標準協議( XEP0211): RFC3920 核心協議 Core RFC3921 即時消息和出 席協議 Instant Messaging and Presence XEP0030 服務發(fā)現 Service Discovery XEP0115 實體能力 Entity Capabilities XMPP 服務器 XMPP 服務器遵循兩個主要法則: l 監(jiān)聽客戶端連接,并直接與客戶端應用程序通信; l 與其他 XMPP 服務器通信; XMPP 開源服務器一般被設計成模塊化,由各個不同的代碼包構成,這些代碼包分別處理 Session 管理、用戶和服務器之間的通信、服 務器之間的通信、 DNS( Domain Name System)轉換、存儲用戶的個人信息和朋友名單、保留用戶在下線時收到的信息、用戶注冊、用戶的身份和權限認證、根據用戶的要求過濾信息和系統(tǒng)記錄等。另外,服務器可以通過附加服務來進行擴展,如完整的安全策略,允許服務器組件的連接或客戶端選擇,通向其他消息系統(tǒng)的網關。 基本的 XMPP 服務器必須實現以下標準協議 RFC3920 核心協議 Core RFC3921 即時消息和出席協議 Instant Messaging and Presence XEP0030 服務發(fā)現 Service Discovery XMPP 網關 XMPP 突出的特點是可以和其他即時通信系統(tǒng)交換信息和用戶在線狀況。由于協議不同, XMPP 和其他系統(tǒng)交換信息必須通過協議的轉換來實現,目前幾種主流即時通信協議都沒有公開,所以 XMPP 服務器本身并沒有實現和其他協議的轉換,但它的架構允許轉換的實現。實現這個特殊功能的服務端在XMPP 架構里叫做網關 (gateway)。目前, XMPP 實現了和 AIM、 ICQ、 IRC、 MSN Massager、 和 Yahoo Massager 的協議轉換。由于網關的存在, XMPP 架構事實上兼容所有其他即時通信網絡,這無疑大大提高了 XMPP 的靈活性和可擴展性。 第三章 XMPP 協議通信格式 XMPP 地址格式 一個實體在 XMPP 網絡結構中被稱為一個接點,它有唯一的標示符 jabber identifier(JID),即實體地址,用來表示一個 Jabber 用戶,但是也可以表示其他內容,例如一個聊天室.一個有效的 JID 包括一系列元素: (1)域名 (domain identifier); (2)節(jié)點 (node identifier); (3)源(resource identifier).它的格式是 node@domain/resource, node@domain,類似電子郵件的地址格式. domain 用來表示接點不同的設備或位置,這個是可選的,例如 a 在 Server1 上注冊了一個用戶,用戶名為 doom,那么 a 的 JID 就是 doom@serverl,在發(fā)送消息時,指明doom@serverl 就可以了, resource 可以不用指定,但 a 在登錄到這個 Server 時, fl 的 JID 可能是 doom@serverl、 exodus(如果 a 用 Exodus 軟件登錄 ),也可能是 doom@serverl/psi(如果 a用 psi 軟件登錄 ).資源只用來識別屬于用戶的位置或設備等,一個用戶可以同時以多種資源與同一個 XMPP 服務器連接。 XMPP 消息格式 XMPP 中定義了 3 個頂層 XML 元素 : Message、 Presence、 IQ,下面針對這三種元素進行介紹。 Message 用于在兩個 jabber 用戶之間發(fā)送信息。 Jsm(jabber 會話管理器 )負責滿足所有的消息,不管目標用戶的狀態(tài)如何。如果用戶在線 jsm 立即提交 。否則 jsm 就存儲。 To :標識消息的接收方。 from : 指發(fā)送方的名字或標示 (id)o Text: 此元素包含了要提交給目標用戶的信息。 結構如下所示 : message to= /contact39。 type =39。chat39。 body 你好,在忙嗎 /body /message Presence 用來表明用戶的狀態(tài),如: online、 away、 dnd(請勿打擾 )等。當用戶離線或改變自己的狀態(tài)時,就會在 stream 的上下文中插入一個 Presence 元素,來表明自身的狀態(tài).結構如下所示: presence From =39。lily @ 39。 To = 39。yaoman @ 39。 status xmlns =jabber: client: xmlns: stream= 39。 = xml: lang=39。en39。 (2)服務器端收到請求,初始化同應流,并隨機生成一組 Session ID stream:stream xmlns: stream = from = localhost id = 30r354rte (3)等待服務器返回消息后客戶端發(fā)送用戶名 iq xmlns = jabber:client from = localhost type=result id=agsXMPP_1 query xmlns = jabber:iq:auth username test /username password digest/query /iq (4)服務器端收到用戶名等待用戶提供密碼 iq xmlns =jabber:clientfrom =localhost type = resultid =agsXMPP_1 query xmlns =jabber:iq:authusernametest /username password/ digest/ /query / iq (5)客戶端提供加密后的密碼 iq xmlns=jabber:client id=agsXMPP_2 to=localhost type=set query xmlns=jabber:iq:authusernametest/usernamedigest e66557d2b67256bf7e9b3l7 5lb6l0l674a56b5e /digest resourceMiniClient /resource/query /iq (6)服務器端從數據庫驗證用戶名和密碼,并返回結果 iq xmlns=jabber:client from= localhost type=result id=agsXMPP_2/ (7) 如果返同錯誤.客戶端提示并中斷連接,否則客戶端發(fā)送響應數據。 (8) 服務器端返回數據。 (9) 客戶端發(fā)送狀態(tài)。 (10) 服務器收到狀態(tài) ,發(fā)送 IQ 節(jié)并通知其他用戶。 Openfire(原名 Wildfire)是基于 XMPP協議由 Jive software 公司開發(fā)的一個開源項目.它是實現 XMPP 協議的 Server 端包. Openfire與客戶端采用的是 C/S 架構.一個服務器要負責為連接在其上的客戶端提供服務. Openfire是由 Java 語言編寫的具有跨平臺能力的一款優(yōu)秀開源軟件。 選擇 Openfire 作為業(yè)務服務器是因為其自身的諸多優(yōu)點: (1) Openfire 內部集成 Resin Web 服務器,可以設計基于 Web 的管理程序。 (2) 實現了插件機制,方便擴展。服務器在運行的時候,會定時地掃描一個特定目錄下的文件,當發(fā)現有新的 Jar 包出現時,就讀入它所有的類,分析類中有沒有支持插件接口的類,如果有,就加載并運行它。 (3) 用戶容量方面,單臺服務器可支持上萬并發(fā)用戶。在測試環(huán)境下可以支持 5000 用戶同時在線,每秒可以轉發(fā) 2020 個包。 (4) Openfire 安裝和使用都非常簡單。 Openfire 是 XMPP 的服務器端實現,在基于Openfire 的 IM 系統(tǒng)中,客戶端和服務器之間的通信是依靠底層 Smack 庫提 供的各種功能來完成的。而利用插件方式來擴展 Openfire 服務器端主要有兩種擴展方式,一種是對服務器控制臺頁面進行擴展(不是開發(fā)的主要目標),其實就是遵循 Openfire 頁面的布局方式,進行相應的頁面擴展和功能擴展;另一種是對通信功能進行擴展。本文主要針對后者進行具體的描述 . Openfire 插件開發(fā)的大致如下: 創(chuàng)建 /修改 openfire 的 (這是整個插件最關鍵的配置文件) 。 創(chuàng)建服務器插件實例(實現 Plugin 接口的類和一批 IQHandler) 。 打包插件( Openfire 插件有自己的打包方式)和部署插件 基于 XMPP 協議 IM 開發(fā) —— Openfire 插件開發(fā) 這篇文章拖了很久了,呵呵,真是千呼萬喚始出來呀。 Openfire 服務器端是支持插件開發(fā)的,開發(fā)過程可能會涉及到數據庫的操作,本篇文章專注于 Openfire 插件的部分,對服務器端涉及到數據庫的開發(fā)只做簡單介紹。 Openfire 是一個用 Java 實現的 XMPP 服務器,客戶端可以通過 IQ 的方式與其進行通信(其實就是 XML),客戶端和服務器之間的通信是依靠底層 Smack 庫提供的各種功能來完成的。其 實利用插件方式來擴展 Openfire 服務器端主要有兩種擴展方式,一種是對服務器控制臺頁面進行擴展(不是本文的主要內容),其實就是遵循 Openfire 頁面的布局方式,進行相應的頁面擴展和功能擴展;另一種是對通信功能進行擴展。本文主要針對后者進行具體的描述 本篇文章的結構如下: 創(chuàng)建 (這是整個插件最關鍵的文檔) 創(chuàng)建服務器插件實例(實現 Plugin 接口的一個類還有一批 IQHandler) 打包插件( Openfire 插件也有自己的打包方式)和部署插件 好滴,實刀實槍的 來動手做吧 創(chuàng)建 初次開發(fā) Openfire 和 Spark 插件的時候,很容易把二者搞混,千萬記得,這里是 Openfire 的 不是第二篇文章說的那個啦! ?xml version= encoding=UTF8? plugin ! Main plugin class 這里是最重要滴 class/class ! Plugin metadata nameGroupTreePlugin/name descriptionThis is the group plugin./description authorPhoenix/author version/version date14/03/2020/date url minServerVersion/minServerVersion licenseTypegpl/licenseType ! Admin console entries adminconsole ! More on this below /adminconsole /plugin 最重要的那一行我已經標記出來啦,就是你這個插件的初始化和垃圾清理類,例子中是在 包中的 GroupTreePlugin 類,下文會對這個類進行詳細描述。其余的都是描述信息,只要你提供了正確的描述信息,一般都不會出錯。建議初次開發(fā)者,在寫完 文件后,寫一個簡單的 Plugin 實例,并打印出一些信息,如果重新啟動 Openfire 信息成功顯示,恭喜你,你已經邁出一大步了! 實現 Plugin 類和 IQHandler Plugin 類主要起到的作用是初始化和釋放資源,在初始化的過程中,最重要的的注冊一批 IQHandler, IQHander 的作用有點類似 于 Spark 中的 IQProvider,其實就是解析 XML 文件之后,生成一些有用的實例,以供處理。下面分別給出一個 Plugin 類的實例和 IQProvider 的實例 GroupTreePlugin 類 /** * 服務器端插件類 * * @author Phoenix * * Mar 14, 2020 11:03:11 AM * *
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1