999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于XMPP網(wǎng)絡(luò)的嘟一下的設(shè)計(jì)與實(shí)現(xiàn)

2024-04-29 00:00:00費(fèi)相如戴勝林許東林胡謝斐
數(shù)字通信世界 2024年2期

摘要:文章通過(guò)分析XMPP核心協(xié)議和企業(yè)級(jí)IMS(EIMS)的需求,通過(guò)開(kāi)發(fā)Openfire服務(wù)器和集成自定義數(shù)據(jù)庫(kù)為EIMS設(shè)計(jì)了一個(gè)實(shí)施框架。我們所提供的基于XMPP的解決方案——嘟一下,具備更好的安全性和開(kāi)放性,并且支持跨平臺(tái)應(yīng)用,可以用最小的成本將基于網(wǎng)絡(luò)的IMS整合到公司內(nèi)部應(yīng)用和服務(wù)當(dāng)中。

關(guān)鍵詞:即時(shí)通信系統(tǒng)(IMS);XMPP;嘟一下;用戶(hù)數(shù)據(jù)庫(kù)集成;Openfire

Design and Implementation of Douyi Based on XMPP Network

FEI Xiangru, DAI Shenglin, XU Donglin, HU Xiefei

(China Telecom Anhui Branch, Hefei 230001, China)

Abstract: The article analyzes the core protocol of XMPP and the requirements of enterprise level IMS (EIMS), develops an Openfire server and integrates a custom database to design an implementation framework for EIMS. The XMPP based solution we provide - Douyi, has better security and openness, and supports cross platform integration. It can integrate network based IMS into internal applications and services of the company at the lowest cost.

Key words: instant messaging system (IMS); XMPP; give it a beep; user database integration; Openfire

1" "研究背景

近年來(lái),不少企業(yè)已逐漸認(rèn)識(shí)到員工在日常辦公中使用即時(shí)通信(IM)的好處,然而,公共IM不安全、不可控,且安裝EIM軟件的成本過(guò)高。因此,基于XMPP的嘟一下提供了一個(gè)通信兼集中管理的內(nèi)部控制平臺(tái)。

2" "相關(guān)背景知識(shí)

2.1 XMPP介紹

可擴(kuò)展消息及存在協(xié)議(XMPP)是一個(gè)基于XML(可擴(kuò)展標(biāo)記語(yǔ)言)[1]的開(kāi)放標(biāo)準(zhǔn)通信協(xié)議,具備開(kāi)放、靈活和可擴(kuò)展的特點(diǎn)。它能夠在個(gè)人或應(yīng)用程序之間可靠地傳輸任何結(jié)構(gòu)化的XML數(shù)據(jù),包括RPC和SOAP調(diào)用。憑借固有的安全功能和對(duì)跨域服務(wù)器聯(lián)合的支持,XMPP更能夠滿(mǎn)足最苛刻環(huán)境的需求[2]。

2.2 XMPP網(wǎng)絡(luò)結(jié)構(gòu)

在實(shí)踐中,XMPP網(wǎng)絡(luò)是由XMPP客戶(hù)端和服務(wù)器組成的,它們可以在一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)上相互關(guān)聯(lián)。其中,最大的XMPP網(wǎng)絡(luò)連接著公共的XMPP服務(wù)器,人們可以自由地在一個(gè)公司內(nèi)部局域網(wǎng)內(nèi),在安全的公司虛擬私人網(wǎng)絡(luò)環(huán)境下創(chuàng)建私人XMPP網(wǎng)絡(luò)。

XMPP服務(wù)器作為XMPP通信的一個(gè)抽象層,提供基本的信息傳遞、存儲(chǔ)和XML路由功能。它主要提供其他實(shí)體的管理連接和會(huì)話(huà)功能,使相關(guān)以XML流的形式來(lái)往于授權(quán)的客戶(hù)、服務(wù)器以及其他實(shí)體之間。大多數(shù)客戶(hù)通過(guò)TCP(傳輸控制協(xié)議)直接連接到服務(wù)器,并使用XMPP來(lái)充分利用服務(wù)器和相關(guān)服務(wù)所提供的功能。多個(gè)資源可以同時(shí)代表多個(gè)授權(quán)客戶(hù)連接到服務(wù)器,每個(gè)資源由XMPP地址的資源標(biāo)識(shí)符區(qū)分[3]。

2.3 尋址方案和標(biāo)識(shí)符

XMPP路由的核心是一種國(guó)際化邏輯尋址方案。域名部分通常是服務(wù)器、組件或插件的域名。在簡(jiǎn)單郵件傳輸協(xié)議中,像電子郵件地址一樣,服務(wù)器代表用戶(hù)相互連接。網(wǎng)絡(luò)上的每個(gè)用戶(hù)都有一個(gè)唯一的JID。每個(gè)資源可能都指定了一個(gè)稱(chēng)為優(yōu)先級(jí)系數(shù)的數(shù)值。發(fā)送到username@example.com的信息將轉(zhuǎn)到具有最高優(yōu)先級(jí)的客戶(hù)端。此外,沒(méi)有用戶(hù)名部分的JID也是有效的,可以用于系統(tǒng)消息和控制服務(wù)器上的特殊功能。對(duì)于這些JID,資源也是可選的。

2.4 XML流和XML節(jié)

(1)XML流。XML數(shù)據(jù)流用于在網(wǎng)絡(luò)上的任意兩個(gè)實(shí)體之間傳輸和交換XML元素,是一種容器類(lèi)機(jī)制。一旦在客戶(hù)端和服務(wù)器之間建立了長(zhǎng)期TCP連接,就會(huì)啟動(dòng)客戶(hù)端和服務(wù)器間的XML流。XMPP XML流采用一個(gè)冗長(zhǎng)文檔的形式,該文檔記錄了每次傳遞消息時(shí)客戶(hù)端和服務(wù)器之間的通信。流是通過(guò)發(fā)送一個(gè)打開(kāi)的<stream:stream>標(biāo)記來(lái)啟動(dòng)的,每個(gè)流將有一個(gè)有效的XML文檔[4]。

(2)XML節(jié)。XML節(jié)是結(jié)構(gòu)化信息的離散語(yǔ)義單元,通過(guò)XML流從一個(gè)實(shí)體發(fā)送到另一個(gè)實(shí)體。XML節(jié)存在于根lt;stream/gt;元素的直接子級(jí),如果它與[XML]的生產(chǎn)[5]內(nèi)容相匹配,則可被認(rèn)為是平衡的。這里定義的唯一XML節(jié)是<message/>、<presence/>和<iq/>,message節(jié)用于在實(shí)體之間發(fā)送消息,presence節(jié)使實(shí)體能夠與其他實(shí)體共享其可用性和狀態(tài),Info/Query(IQ)節(jié)是雙向的,用于當(dāng)一個(gè)實(shí)體查詢(xún)另一個(gè)實(shí)體并期望得到響應(yīng)時(shí)使用。

3" "嘟一下的總體分析和設(shè)計(jì)

3.1 嘟一下的基本要求

嘟一下需要提供人與人之間業(yè)務(wù)實(shí)時(shí)交互的基本功能,如即時(shí)通信、文件傳輸、花名冊(cè)管理和會(huì)議室管理等;企業(yè)可以根據(jù)自己的業(yè)務(wù)需求完成特定的模塊化客戶(hù)端定制。本文將基本業(yè)務(wù)需求初步總結(jié)如下。

⊙ 嘟一下操作流程的基本功能應(yīng)該簡(jiǎn)單、易于理

解和掌握。

⊙ 企業(yè)級(jí)產(chǎn)品必須具有高度的安全性和可控性,

業(yè)務(wù)經(jīng)理可以通過(guò)即時(shí)通信服務(wù)器對(duì)內(nèi)部用戶(hù)

進(jìn)行統(tǒng)一管理和監(jiān)控。

⊙ 將嘟一下系統(tǒng)集成到OA、ERP等辦公管理和

應(yīng)用系統(tǒng)中,從而實(shí)現(xiàn)業(yè)務(wù)溝通與管理的結(jié)合。

⊙ 嘟一下需要開(kāi)發(fā)出結(jié)構(gòu)良好的編程語(yǔ)言和開(kāi)放

接口來(lái)實(shí)現(xiàn)二次開(kāi)發(fā),為企業(yè)在未來(lái)的維護(hù)中

的系統(tǒng)升級(jí)做準(zhǔn)備。

⊙ 嘟一下應(yīng)該打破IM協(xié)議的限制,實(shí)現(xiàn)與其他通

信產(chǎn)品的互通互連。

3.2 嘟一下的設(shè)計(jì)框架

本文設(shè)計(jì)了基于XMPP協(xié)議和開(kāi)源軟件的嘟一下系統(tǒng)的總體框架,通過(guò)登錄XMPP客戶(hù)端,嘟一下用戶(hù)可以與XMPP服務(wù)器建立連接并相互通信。XMPP客戶(hù)端是基于XMPP協(xié)議開(kāi)發(fā)的,除了XMPP標(biāo)準(zhǔn)協(xié)議提供和支持的基本功能,在設(shè)計(jì)嘟一下客戶(hù)端時(shí)需要滿(mǎn)足二次開(kāi)發(fā)以豐富客戶(hù)端的功能,如文件傳輸、會(huì)議室和廣播等所需功能,這也將為最終用戶(hù)提供更高效、更方便的操作模式。服務(wù)器端的系統(tǒng)管理員可以通過(guò)管理模塊操作和控制嘟一下服務(wù)器和其他應(yīng)用服務(wù)器的數(shù)據(jù)庫(kù),還可以根據(jù)自己的需求和情況,通過(guò)插件開(kāi)發(fā)來(lái)設(shè)計(jì)和實(shí)現(xiàn)插件功能。通過(guò)配置XMPP提供的網(wǎng)關(guān),公司可以在內(nèi)部即時(shí)消息系統(tǒng)與外部即時(shí)消息系統(tǒng)之間交換信息。

3.3 嘟一下平臺(tái)開(kāi)發(fā)

3.3.1 基于XMPP的Openfire服務(wù)器

Openfire是一款開(kāi)源實(shí)時(shí)協(xié)作(RTC)服務(wù)器,配有各種插件進(jìn)行功能擴(kuò)展。其使用JSP和JavaBeans,本身的系統(tǒng)設(shè)計(jì)具有良好的編程結(jié)構(gòu),管理控制臺(tái)支持插件來(lái)改變服務(wù)器的功能。通過(guò)Openfire的編程設(shè)計(jì)功能,JSP頁(yè)面可以通過(guò)打包請(qǐng)求對(duì)象直接調(diào)用業(yè)務(wù)處理邏輯類(lèi)實(shí)例的方法來(lái)傳遞變量和跳轉(zhuǎn)頁(yè)面,并采用裝飾性框架來(lái)顯示JSP頁(yè)面。因此,Openfire在ElM服務(wù)器開(kāi)發(fā)和應(yīng)用中具有更好的靈活性和可配置性。本文中將Openfire作為設(shè)計(jì)和開(kāi)發(fā)嘟一下服務(wù)器。

Openfire使用開(kāi)放式XMPP協(xié)議,可以實(shí)現(xiàn)與其他基于該協(xié)議的即時(shí)通信軟件的互操作性;Openfire基于Java編程語(yǔ)言編寫(xiě)代碼,具有清晰的結(jié)構(gòu)和編程規(guī)范,易于理解和二次開(kāi)發(fā);Openfire實(shí)現(xiàn)了插件機(jī)制,插件擴(kuò)展機(jī)制完美地滿(mǎn)足了用戶(hù)設(shè)計(jì)和擴(kuò)展服務(wù)器功能的要求;Openfire的基本功能穩(wěn)定,安裝和配置過(guò)程簡(jiǎn)單,一臺(tái)服務(wù)器就可以支持?jǐn)?shù)千用戶(hù)登錄,具有強(qiáng)大的數(shù)據(jù)通信能力。

3.3.2 Openfire消息傳遞過(guò)程

采用XMPP協(xié)議進(jìn)行IM,其核心功能是消息傳輸。Openfire最重要的核心代碼是監(jiān)聽(tīng)和處理客戶(hù)端消息包。在本文中,我們想通過(guò)引入一些重要的類(lèi)和服務(wù)來(lái)分析這個(gè)過(guò)程。

首先,獲取當(dāng)前會(huì)話(huà)類(lèi)StanzaHandler,該類(lèi)也被假設(shè)為業(yè)務(wù)流程類(lèi),實(shí)例化XMPP PacketReader(解析和讀取XML數(shù)據(jù),打包數(shù)據(jù)包),然后根據(jù)XML數(shù)據(jù)包判斷確定應(yīng)該處理哪種XML元素,從而進(jìn)入過(guò)程(doc)方法。

其次,如果處理請(qǐng)求的XML包是IQ類(lèi)型,其處理流程與消息和存在類(lèi)型相同,在這方面,進(jìn)程會(huì)調(diào)用processIQ方法對(duì)IQ類(lèi)型的包進(jìn)行初步處理,隨后將其傳遞給路由器組件。路由器進(jìn)一步將包傳輸給特定的IQRouter類(lèi)的handle方法,在此過(guò)程中IQ包中的XML元素被解析并打包至用戶(hù)對(duì)象,接著系統(tǒng)調(diào)用底層數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)XML格式數(shù)據(jù),并生成返回客戶(hù)端的應(yīng)答包。

最后,在完成會(huì)話(huà)的處理流程后,系統(tǒng)將自動(dòng)生成回復(fù)并返回給客戶(hù)端。進(jìn)入并調(diào)用conn.delivery(數(shù)據(jù)包),接著進(jìn)入NIOConnection類(lèi)并確定連接是否斷開(kāi),如果連接斷開(kāi),則繼續(xù)關(guān)閉。這樣就可以在客戶(hù)端和服務(wù)器之間接收和處理XML數(shù)據(jù)包。

3.4 XMPP服務(wù)器與Openfire客戶(hù)端之間的消息處理

在嘟一下實(shí)時(shí)通信系統(tǒng)中,首先通過(guò)訪問(wèn)IM Web界面,用戶(hù)將被要求輸入用戶(hù)名和密碼信息,同時(shí)觸發(fā)一系列相關(guān)的偵聽(tīng)器事件,然后調(diào)用事件函數(shù)來(lái)處理信息流,并將其打包為XML結(jié)構(gòu)化數(shù)據(jù);其次,當(dāng)消息處理模塊接收到打包后的數(shù)據(jù)時(shí),它會(huì)在數(shù)據(jù)上附加一些屬性,通過(guò)收發(fā)器處理模塊處理XML流并將其發(fā)送到Openfire服務(wù)器。最后,當(dāng)Openfire服務(wù)器接收到XML流時(shí),它將檢查會(huì)話(huà)池,服務(wù)器將解析XML流并生成XML數(shù)據(jù)包,生成的數(shù)據(jù)包將被壓入數(shù)據(jù)包隊(duì)列,Openfire會(huì)處理該數(shù)據(jù)包并以XML數(shù)據(jù)包的形式返回結(jié)果。

簡(jiǎn)言之,為了建立基于XMPP的嘟一下系統(tǒng),IM客戶(hù)端必須獲取唯一的會(huì)話(huà)ID來(lái)連接服務(wù)器,并且轉(zhuǎn)換后的消息格式必須以XML格式結(jié)構(gòu)化,并嚴(yán)格遵守XMPP,客戶(hù)端也應(yīng)該正確有效地監(jiān)控和解析XML流。

4" "實(shí)施嘟一下的關(guān)鍵技術(shù)

4.1 客戶(hù)數(shù)據(jù)庫(kù)集成

根據(jù)嘟一下的需求,我們需要將IM與我們現(xiàn)有的網(wǎng)站集成,然而,對(duì)于大多數(shù)公司來(lái)說(shuō),用戶(hù)已經(jīng)在企業(yè)系統(tǒng)中擁有帳戶(hù),Openfire提供了自定義的數(shù)據(jù)庫(kù)集成功能來(lái)解決上述問(wèn)題。本文總結(jié)了Openfire身份驗(yàn)證、用戶(hù)和分組、自定義數(shù)據(jù)庫(kù)表集成等關(guān)鍵點(diǎn)。通過(guò)與用戶(hù)數(shù)據(jù)庫(kù)的簡(jiǎn)單集成,用戶(hù)可以使用現(xiàn)有的用戶(hù)名和密碼進(jìn)行身份驗(yàn)證。

(1)與自定義外部數(shù)據(jù)庫(kù)最簡(jiǎn)單的集成就是身份驗(yàn)證,但是當(dāng)客戶(hù)數(shù)據(jù)庫(kù)已經(jīng)有密碼加密時(shí),在這種情況下,必須以相同的加密方法完成身份驗(yàn)證集成。

(2)通過(guò)用戶(hù)集成,Openfire可以從自定義數(shù)據(jù)庫(kù)加載用戶(hù)數(shù)據(jù)。自定義數(shù)據(jù)庫(kù)可以是不同于Openfire數(shù)據(jù)庫(kù)的服務(wù)器上的不同數(shù)據(jù)庫(kù)。

(3)Openfire可以從自定義數(shù)據(jù)庫(kù)加載組數(shù)據(jù)。完成分組集成設(shè)置時(shí),可以將每個(gè)組中的一個(gè)成員授權(quán)為管理員,并且Openfire中的任何分組都可以被指定為共享分組。

4.2 Openfire插件開(kāi)發(fā)

插件提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)向Openfire添加功能,而無(wú)須直接對(duì)源代碼進(jìn)行更改。它們可以提供與組件基本相同的功能,但它們也可以訪問(wèn)服務(wù)器的內(nèi)部數(shù)據(jù)結(jié)構(gòu),并可以修改核心服務(wù)器的行為。它們采用消息的內(nèi)部表示方式,不必解析/序列化XML節(jié)。在該系統(tǒng)中,我們開(kāi)發(fā)了幾個(gè)插件,具有處理重復(fù)登錄、用戶(hù)組織結(jié)構(gòu)和文件傳輸?shù)裙δ埽瑯O大地提高了客戶(hù)端的功能應(yīng)用水平。

4.3 基于Web的IM客戶(hù)端

網(wǎng)絡(luò)即時(shí)消息(WIM)不僅是網(wǎng)絡(luò)營(yíng)銷(xiāo)的需要,也是為了滿(mǎn)足未來(lái)新興商業(yè)模式而開(kāi)發(fā)的。WIM的優(yōu)勢(shì)是基于B/S模式,無(wú)須安裝客戶(hù)端軟件,開(kāi)源編程,易于集成到Web應(yīng)用程序中,并支持多種類(lèi)型的操作系統(tǒng)和瀏覽器。越來(lái)越多的商業(yè)網(wǎng)站提供WIM服務(wù),以提高通信效率和降低成本。

在嘟一下客戶(hù)端開(kāi)發(fā)過(guò)程中,我們分析和總結(jié)了各種基于XMPP的開(kāi)源WIM。考慮到穩(wěn)定性和靈活性,發(fā)現(xiàn)Jwchat具有最全面的功能,因此將Jwchat選為嘟一下的Web客戶(hù)端。二次開(kāi)發(fā)的關(guān)鍵技術(shù)是將HTML頁(yè)面編程為JSP頁(yè)面,從而應(yīng)用基于J2EE的三層架構(gòu)(Webwork+Spring+Hibernate)。本文中介紹的嘟一下證明了該體系結(jié)構(gòu)可提供一個(gè)安全性強(qiáng)、編程結(jié)構(gòu)簡(jiǎn)單的跨平臺(tái)。

5" "結(jié)束語(yǔ)

公司選擇運(yùn)營(yíng)自己的XMPP服務(wù)器有很多原因。一些公司不想將敏感的內(nèi)部通信委托給外部服務(wù)公司。在這些類(lèi)型的環(huán)境中,自托管消息服務(wù)的優(yōu)勢(shì)是顯而易見(jiàn)的?;赬MPP的嘟一下的另一個(gè)關(guān)鍵優(yōu)勢(shì)是,它可以與公司的其他應(yīng)用程序和服務(wù)集成,如可以集成到外部的Web客戶(hù)支持聊天系統(tǒng)中。該協(xié)議也足夠靈活,除了聊天之外,還支持多種不同的用途。它可以與各種自動(dòng)化系統(tǒng)接口,這使嘟一下成為辦公室實(shí)時(shí)工作和合作的重要通信工具,具有重要的實(shí)用價(jià)值和發(fā)展前景。■

參考文獻(xiàn)

[1] SHAO N W Y, YANG S J H, SUE A Y S. A Content Management System for Adaptive Learning Environment[C]. Proceedings of Fifth International Symposium 2003 on Multimedia Software Engineering, 2003.

[2] LIU J X. Design and Analysis of a Solution for a Managed and Controllable P2P Streaming Media System with Integrated IMS[D]. Beijing University of Posts and Telecommunications, 2010.

[3] SAINT-ANDRE P Ed. Extensible messaging and presence protocol (XMPP): Core[S]. RFC3920, 2004.

[4] HATTERJEE S, et al. Instant Messaging and Presence Technologies for College Campuses[J]. IEEE Network, 2005, 19(3): 4-13.

[5] WEIS G, LEWIS A. Using XMPP for ad-hoc grid computing an application example using parallel ant colony optimization[C]. Proceedings of the IEEE International Symposium on Parallel and Distributed Processing, 2009.

作者簡(jiǎn)介:費(fèi)相如(1983-),女,漢族,安徽合肥人,研究生,研究方向?yàn)閿?shù)據(jù)分析、數(shù)據(jù)挖掘。

主站蜘蛛池模板: 久久五月天国产自| 波多野结衣亚洲一区| 色综合狠狠操| 亚洲一区二区在线无码| 国产日韩AV高潮在线| 久久久久人妻一区精品| 亚洲aⅴ天堂| 久草视频精品| 91精品aⅴ无码中文字字幕蜜桃| 国内精品视频区在线2021| 国产青青草视频| 嫩草国产在线| 日本人妻一区二区三区不卡影院 | 国产精品所毛片视频| 日韩中文精品亚洲第三区| 国产97视频在线| 国产精品自在在线午夜区app| 亚洲第一区在线| 久久国产精品麻豆系列| 国产性爱网站| 国产99精品久久| 久久伊人操| 最新午夜男女福利片视频| 日本成人福利视频| 中文字幕久久亚洲一区| 国产成人亚洲精品无码电影| 人妻丰满熟妇αv无码| 欧美高清三区| 亚洲国产日韩在线观看| 日本精品影院| 91麻豆国产视频| 极品国产在线| 99久久成人国产精品免费| 久久香蕉国产线看观看精品蕉| 亚洲国产精品不卡在线 | 天天躁狠狠躁| 久久精品日日躁夜夜躁欧美| 最新亚洲av女人的天堂| аⅴ资源中文在线天堂| 欧美亚洲国产精品久久蜜芽| 国产精品吹潮在线观看中文| 久操中文在线| 日韩人妻少妇一区二区| 9啪在线视频| 欧美不卡视频一区发布| 亚洲国产在一区二区三区| 日韩激情成人| 五月天丁香婷婷综合久久| 国产精品无码作爱| 国产精品福利导航| 67194成是人免费无码| 国产毛片网站| 成人午夜视频网站| 黄片在线永久| 中文字幕在线播放不卡| 伊人国产无码高清视频| 蜜桃臀无码内射一区二区三区| 扒开粉嫩的小缝隙喷白浆视频| 91久久精品国产| 一级全黄毛片| 91毛片网| 人妻少妇乱子伦精品无码专区毛片| 亚洲视频三级| 亚洲成人网在线播放| 91精品国产自产在线观看| 亚洲 欧美 日韩综合一区| 国模视频一区二区| 午夜无码一区二区三区| 日韩一级二级三级| 久久semm亚洲国产| 99精品影院| 少妇人妻无码首页| 91在线精品麻豆欧美在线| 全午夜免费一级毛片| 无码一区中文字幕| 青青青视频免费一区二区| 国产剧情国内精品原创| 久久精品人妻中文系列| 国产小视频在线高清播放 | 操操操综合网| 欧美翘臀一区二区三区| 无码人中文字幕|