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

正文內(nèi)容

xmpp協(xié)議及其服務(wù)器端的openfire插件開發(fā)(更新版)

2025-12-23 08:26上一頁面

下一頁面
  

【正文】 // write history entry if (historyDays != 0) { try { con = ()。 try { con = ()。 ()。 } catch (SQLException e) { (”Unable to update user status for ” + (), e)。 if (!().getUserManager().isRegisteredUser(())) { return。 } for (ClientSession session : ().getSessions()) { sessionCreated(session)。 PreparedStatement pstmt = null。 //By est private static final String SET_OFFLINE = “UPDATE userStatus SET online = 0, lastLogoffDate = ? Where username = ? AND resource = ?”。 import 。 import 。 import 。當(dāng)時(shí)我安裝的 oenfire 是 所以源碼也下載的是 版本 。 } } 可以看到主要有兩個(gè)方法,一個(gè)是 getInfo() 這個(gè)方法的目的是提供要解析的命名空間,在本例中,這個(gè) IQHandler 對每個(gè)命名空間為 :im:group 的實(shí)例進(jìn)行處理;還有一個(gè)最重要的方法: handleIQ() 該方法對包含指定命名空間的 XML 進(jìn)行解析,然后返回一個(gè)解析好的 IQ。 (())。 private static final String NAME_SPACE = :im:group。 ().addHandler(new GroupTreeIQHander())。 Openfire 是一個(gè)用 Java 實(shí)現(xiàn)的 XMPP 服務(wù)器,客戶端可以通過 IQ 的方式與其進(jìn)行通信(其實(shí)就是 XML),客戶端和服務(wù)器之間的通信是依靠底層 Smack 庫提供的各種功能來完成的。 StanzaHander 的實(shí)例 hander 處理 xml 數(shù)據(jù)包的過程 StanzaHander 首先判斷 xml 數(shù)據(jù)包的類型, .如果數(shù)據(jù)包以 “ stream:stream” 打頭那么說明客戶端剛剛連接,需要初始化通信(符合 XMPP 協(xié)議) Openfire 首先為此客戶端建立一個(gè)與客戶端 JID相關(guān)的 ClientSession,而后與客戶端交互協(xié)商例如是否使用 SSL,是否使用壓縮等問題。 IoHandler: MINA 中,所有的業(yè)務(wù)邏輯都有實(shí)現(xiàn)了 IoHandler 的 class 完成 ,當(dāng)事件發(fā)生時(shí),將觸發(fā) IoHandler 中的方法 : sessionCreated sessionOpened sessionClosed sessionIdle exceptionCaught messageReceived messageSent 在 Openfire 中客戶端和服務(wù)器連接的 IoHandler 實(shí)現(xiàn)類是 ClientConnectionHandler,它是從 ConnectionHandler 中繼承來的。 下面分析的是客戶端和服務(wù)器的連接。 } } 可以看到主要有兩個(gè)方法,一個(gè)是 getInfo() 這個(gè)方法的目的是提供要解析的命名空間,在本例中,這個(gè) IQHandler 對每個(gè)命名空間為 :im:group 的實(shí)例進(jìn)行處理;還有一個(gè)最重要的方法: handleIQ() 該方法對包含指定命名空間的 XML 進(jìn)行解析,然后返回一個(gè)解析好的 IQ。 (())。 private static final String NAME_SPACE = :im:group。 ().addHandler(new GroupTreeIQHander())。 Openfire 是一個(gè)用 Java 實(shí)現(xiàn)的 XMPP 服務(wù)器,客戶端可以通過 IQ 的方式與其進(jìn)行通信(其實(shí)就是 XML),客戶端和服務(wù)器之間的通信是依靠底層 Smack 庫提供的各種功能來完成的。在測試環(huán)境下可以支持 5000 用戶同時(shí)在線,每秒可以轉(zhuǎn)發(fā) 2020 個(gè)包。 (8) 服務(wù)器端返回?cái)?shù)據(jù)。當(dāng)用戶離線或改變自己的狀態(tài)時(shí),就會在 stream 的上下文中插入一個(gè) Presence 元素,來表明自身的狀態(tài).結(jié)構(gòu)如下所示: presence From =39。如果用戶在線 jsm 立即提交 。由于協(xié)議不同, XMPP 和其他系統(tǒng)交換信息必須通過協(xié)議的轉(zhuǎn)換來實(shí)現(xiàn),目前幾種主流即時(shí)通信協(xié)議都沒有公開,所以 XMPP 服務(wù)器本身并沒有實(shí)現(xiàn)和其他協(xié)議的轉(zhuǎn)換,但它的架構(gòu)允許轉(zhuǎn)換的實(shí)現(xiàn)。事實(shí)上, XMPP 系統(tǒng)架構(gòu)對客戶端只有很少的幾個(gè)限制。純 UDP 傳輸機(jī)制,文件講述了如何在沒有防火墻且在同一網(wǎng)絡(luò)下建立連接的。將 XMPP 綁定到 HTTP 而不是 TCP,主要用于不能夠持久的維持與服務(wù)器 TCP 連接的設(shè)備。一個(gè)強(qiáng)大的用來測定 XMPP 網(wǎng)絡(luò)中的其它實(shí)體所支持特性的協(xié)議。 Core 文檔還規(guī)定了錯誤的定義及處理、 XML 的使用規(guī)范、 JID( Jabber Identifier, Jabber 標(biāo)識符)的定義、命名規(guī)范等等。 第三章詳細(xì)闡述了 XMPP 協(xié)議的通訊格式,這是協(xié)議通信的底層基礎(chǔ),所有的網(wǎng)絡(luò)通信均依靠 Message, Presence 以及 IQ 元素來傳遞。 4. XMPP 具有很好的彈性。 XMPP 協(xié)議并不屬于任何的機(jī)構(gòu)和個(gè)人,而是屬于整個(gè)社區(qū),這一點(diǎn)從根本上保證了其開放性。而 XMPP 的核心部分就是一個(gè)在網(wǎng)絡(luò)上分片斷發(fā)送 XML 的流協(xié)議。通信能夠在這三者的任意兩個(gè)之間雙向發(fā)生。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息,即使其操作系統(tǒng)和瀏覽器丌同。因此,基于 XMPP的應(yīng)用具有超強(qiáng)的可擴(kuò)展性。標(biāo)準(zhǔn)化的核心絀果分為兩部分; 核心的 XML 流傳輸協(xié)議 基于 XML FreeEIM 流傳輸?shù)募磿r(shí)通訊擴(kuò)展應(yīng)用 XMPP 的核心XML 流傳輸協(xié)議的定義使得 XMPP 能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺上?;镜木W(wǎng)絡(luò)形式是單客戶端通過 TCP/IP 連接到單服務(wù)器,然后在乊上傳輸 XML。 XMPP(Extensible Messaging and Presence Protocol,可擴(kuò)展的消息和出席協(xié)議 )是一種基于XML 的傳遞消息路由和出席信息 (Presence)的協(xié)議,它為不同的網(wǎng)絡(luò)之間互聯(lián)提供了一種安全而簡單的編程語言,是 Jabber 系統(tǒng) (一種開放源代碼的即時(shí)通信 IM 系統(tǒng) ,Openfire 系統(tǒng)的前稱 )的基礎(chǔ),其所具備的開放特性,使開發(fā)者之間互相合作,促進(jìn)了即時(shí)通信領(lǐng)域技術(shù)的進(jìn)步與交流.對用戶而言,在面對現(xiàn)有的各種即時(shí) 通信服務(wù),沒有統(tǒng)一標(biāo)準(zhǔn),無法實(shí)現(xiàn)互聯(lián)互通的局面下, XMPP 的出現(xiàn),實(shí)現(xiàn)了整個(gè)即時(shí)通信服務(wù)協(xié)議的統(tǒng)一,促進(jìn)了服務(wù)器之間的準(zhǔn)即時(shí)操作.即使其操作系統(tǒng)和瀏覽器不同的情況下, XMPP 協(xié)議將最終允許因特網(wǎng)任何用戶之間的消息傳送.近幾年來,由于即時(shí)通信 (IM)巨大的商業(yè)價(jià)值,僅國內(nèi)就出現(xiàn)了 ,網(wǎng)易泡泡,新浪 UC 等多種 IM 系統(tǒng).本文將從實(shí)際項(xiàng)目開發(fā)的角度出發(fā),探討 XMPP 協(xié)議及其服務(wù)器端實(shí)現(xiàn)的應(yīng)用. 在 IETF 中,把 IM 協(xié)議劃分為四種協(xié)議,即即時(shí)信息和出席協(xié)議 (Instant Messaging and Presence Protocol, IMPP)、出席和即時(shí)信息協(xié)議 (Presence and Instant Messaging Protocol, PRIM)、針對即時(shí)信息和出席擴(kuò)展的會話發(fā)起協(xié)議 (Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions, SIMPLE),以及可擴(kuò)展的消息出席協(xié)議 (XMPP)。 XMPP 發(fā)揮了 XML 結(jié)構(gòu)化數(shù)據(jù)的通用傳輸層的作用,它將出席和上下文敏感信息嵌入到 XML 結(jié)構(gòu)化數(shù)據(jù)中,從而使數(shù)據(jù)以極高的效率傳送給最合適的資源。 XMPP在 ClienttoServer通信,和 ServertoServer通信中都使用 TLS (Transport Layer Security)協(xié)議作為通信通道的加密方法,保證通信的安全。 IETF 已經(jīng)將 Jabber 定為即時(shí)通信和現(xiàn)場技術(shù)的標(biāo)準(zhǔn)協(xié)議,并改名為 XMPP,相關(guān)的規(guī)范是 RFC3920 和 RFC3921,并且,JSF 也在它的 XEP (XMPP Extension Protocols)中制定了更多擴(kuò)展協(xié)議 (例如 GroupChat 和文件傳輸?shù)?),這些擴(kuò)展協(xié)議目前有些還沒有 成為標(biāo)準(zhǔn),但是將來有成為標(biāo)準(zhǔn)的可能性。所有的這些業(yè)務(wù)都是通過三種基本的 XML 節(jié)來完成的: IQ Stanza( IQ 節(jié)) , Presence Stanza( Presence 節(jié)) , Message Stanza( Message 節(jié) )。 XEP0045 多人聊天。 XEP0167 Jingle Audio Content Description Format。 XEP0181 Jingle DTMF( Dual Tone MultiFrequency)。這使得客戶端編寫變得非常容易,更新系統(tǒng)功能也同樣變得容易。由于網(wǎng)關(guān)的存在, XMPP 架構(gòu)事實(shí)上兼容所有其他即時(shí)通信網(wǎng)絡(luò),這無疑大大提高了 XMPP 的靈活性和可擴(kuò)展性。 from : 指發(fā)送方的名字或標(biāo)示 (id)o Text: 此元素包含了要提交給目標(biāo)用戶的信息。yaoman 39。 Openfire(原名 Wildfire)是基于 XMPP協(xié)議由 Jive software 公司開發(fā)的一個(gè)開源項(xiàng)目.它是實(shí)現(xiàn) XMPP 協(xié)議的 Server 端包. Openfire與客戶端采用的是 C/S 架構(gòu).一個(gè)服務(wù)器要負(fù)責(zé)為連接在其上的客戶端提供服務(wù). Openfire是由 Java 語言編寫的具有跨平臺能力的一款優(yōu)秀開源軟件。而利用插件方式來擴(kuò)展 Openfire 服務(wù)器端主要有兩種擴(kuò)展方式,一種是對服務(wù)器控制臺頁面進(jìn)行擴(kuò)展(不是開發(fā)的主要目標(biāo)),其實(shí)就是遵循 Openfire 頁面的布局方式,進(jìn)行相應(yīng)的頁面擴(kuò)展和功能擴(kuò)展;另一種是對通信功能進(jìn)行擴(kuò)展。其余的都是描述信息,只要你提供了正確的描述信息,一般都不會出錯。 ().addHandler(new CreateUserIQHandler())。 info = new IQHandlerInfo(gruops, NAME_SPACE)。 } String userName = (().toString(),)。程序 //1 處主要是獲取創(chuàng)建返回的 IQ,并獲取原來 IQ 的子元素(用于創(chuàng)建我們返回的 IQ);程序 //2 處很關(guān)鍵,如果你不調(diào)用 createCopy 方法,程序會出錯(程序會死鎖還是什么,忘記咧,不好以西)。它攔截所有的 IO 事件進(jìn)行事件的預(yù)處理和后處理。 客戶端連接的處理過程: 當(dāng)有客戶端進(jìn)行連接時(shí)根據(jù) Mina 框架的模式首先調(diào)用的是 sessionOpened 方法。由于源代碼中用戶信息不能滿足要求, 需要擴(kuò)展。其余的都是描述信息,只要你提供了正確的描述信息,一般都不會出錯。 ().addHandler(new CreateUserIQHandler())。 info = new IQHandlerInfo(gruops, NAME_SPACE)。 } String userName = (().toString(),)。程序 //1 處主要是獲取創(chuàng)建返回的 IQ,并獲取原來 IQ 的子元素(用于創(chuàng)建我們返回的 IQ);程序 //2 處很關(guān)鍵,如果你不調(diào)用 createCopy 方法,程序會出錯(程序會死鎖還是什么,忘記咧,不好以西)。 import 。 import 。 import 。 import 。 private static final String DELETE_OLD_USER_STATUS_HISTORY = “DELETE From userStatusHistory Where lastLogoffDate ?”。 try { con = ()。 } public void destroyPlugin() { (this)。 (1, getHostAddress(session))。 pstmt = (ADD_USER_STATUS)。 } } } public void sessionDestroyed(Session session) { Connection con = null。 (2, ().getNode())。 (2, ().getNode())。 } }
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1