一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于xmpp協(xié)議的發(fā)布/訂閱服務(wù)方法
【專利摘要】本發(fā)明涉及一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,涉及工業(yè)測(cè)控網(wǎng)絡(luò)技術(shù)領(lǐng)域。本方法在XMPP系列協(xié)議標(biāo)準(zhǔn)的基礎(chǔ)上,根據(jù)工業(yè)測(cè)控網(wǎng)絡(luò)自身特點(diǎn)和應(yīng)用需求,設(shè)計(jì)了基于XMPP協(xié)議的發(fā)布/訂閱方法。該方法主要在XMPP服務(wù)器中添加了發(fā)布/訂閱關(guān)系維護(hù)和管理功能,支持基于事件的發(fā)布和周期性數(shù)據(jù)的發(fā)布;此外,針對(duì)工業(yè)測(cè)控網(wǎng)絡(luò)的節(jié)能需求,在發(fā)布/訂閱方法中加入了對(duì)休眠傳感器節(jié)點(diǎn)的支持機(jī)制。該方法不僅可以實(shí)現(xiàn)工業(yè)測(cè)控網(wǎng)絡(luò)中現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端之間的發(fā)布/訂閱,也支持工業(yè)現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端與互聯(lián)網(wǎng)客戶端之間的發(fā)布/訂閱。本發(fā)明在工業(yè)測(cè)控網(wǎng)絡(luò)中實(shí)現(xiàn)的基于XMPP的發(fā)布/訂閱服務(wù)方法,能夠降低發(fā)布者實(shí)現(xiàn)發(fā)布功能的復(fù)雜度,節(jié)省工業(yè)測(cè)控網(wǎng)絡(luò)的能量開(kāi)銷。
【專利說(shuō)明】
一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于工業(yè)測(cè)控網(wǎng)絡(luò)技術(shù)領(lǐng)域,涉及一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā) 布/訂閱服務(wù)方法。
【背景技術(shù)】
[0002] 工業(yè)測(cè)控網(wǎng)絡(luò)包括了從儀表電氣、現(xiàn)場(chǎng)總線、工業(yè)以太網(wǎng)到無(wú)線網(wǎng)絡(luò)等各種網(wǎng)絡(luò) 結(jié)構(gòu),而有線與無(wú)線網(wǎng)絡(luò)技術(shù)集成實(shí)現(xiàn)異構(gòu)的工業(yè)測(cè)控網(wǎng)絡(luò)是新的發(fā)展趨勢(shì),這推動(dòng)了物 聯(lián)網(wǎng)技術(shù)在工業(yè)現(xiàn)場(chǎng)測(cè)控領(lǐng)域的發(fā)展。并且發(fā)布/訂閱服務(wù)模式是工業(yè)測(cè)控網(wǎng)絡(luò)數(shù)據(jù)通信 的一種重要方法。然而工業(yè)測(cè)控領(lǐng)域的通信協(xié)議眾多,但各協(xié)議之間存在互不兼容等問(wèn)題。 XMPP協(xié)議是一種基于IP技術(shù)和XML語(yǔ)言的即時(shí)信息傳輸規(guī)范,并且在其協(xié)議中增加了對(duì)發(fā) 布/訂閱的支持。作為一種具有良好的實(shí)時(shí)性和擴(kuò)展性的應(yīng)用層協(xié)議,XMPP協(xié)議已經(jīng)在互聯(lián) 網(wǎng)中得到了廣泛的部署和應(yīng)用,例如,聊天、娛樂(lè)、電子郵件等需要實(shí)時(shí)消息推送的應(yīng)用。在 工業(yè)測(cè)控網(wǎng)絡(luò)中引入XMPP協(xié)議,不僅可以解決異構(gòu)網(wǎng)絡(luò)之間的互聯(lián)互通問(wèn)題,還能實(shí)現(xiàn)即 時(shí)通訊。
[0003] 當(dāng)前互聯(lián)網(wǎng)中XMPP協(xié)議的應(yīng)用主要注重于數(shù)據(jù)的雙向交互,而工業(yè)測(cè)控網(wǎng)絡(luò)中 XMPP協(xié)議的應(yīng)用主要注重于數(shù)據(jù)的匯集;發(fā)布/訂閱機(jī)制在互聯(lián)網(wǎng)中主要是基于事件的發(fā) 布,而在工業(yè)網(wǎng)測(cè)控網(wǎng)絡(luò)中不僅是基于事件的發(fā)布,還有發(fā)布周期性數(shù)據(jù)的需求。然而,當(dāng) 前XMPP協(xié)議中發(fā)布/訂閱機(jī)制主要是基于事件的發(fā)布,不能對(duì)周期性數(shù)據(jù)的發(fā)布提供有力 支持,也不能對(duì)具備休眠節(jié)點(diǎn)提供支持。因此,很有必要對(duì)現(xiàn)有的XMPP協(xié)議中的機(jī)制進(jìn)行優(yōu) 化和改進(jìn)。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本發(fā)明的目的在于提供一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂 閱服務(wù)方法,該方法結(jié)合工業(yè)測(cè)控網(wǎng)絡(luò)的自身特點(diǎn)和應(yīng)用,發(fā)布者和訂閱者之間的訂閱關(guān) 系不再由發(fā)布者管理,改進(jìn)為服務(wù)器管理,同時(shí)能支持具備休眠功能節(jié)點(diǎn)的發(fā)布/訂閱服 務(wù);該方法實(shí)現(xiàn)了有效的發(fā)布/訂閱管理,能夠降低發(fā)布者實(shí)現(xiàn)發(fā)布功能的復(fù)雜度,節(jié)省工 業(yè)測(cè)控網(wǎng)絡(luò)的能量開(kāi)銷。
[0005] 為達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:
[0006] -種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,該方法不僅支持工業(yè) 測(cè)控現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端之間的發(fā)布/訂閱,也支持互聯(lián)網(wǎng)客戶端通過(guò)互聯(lián)網(wǎng)網(wǎng)絡(luò)連接服務(wù)器 實(shí)現(xiàn)互聯(lián)網(wǎng)客戶端與現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端之間的發(fā)布/訂閱;該方法中的通信實(shí)體包括訂閱者、 發(fā)布者和服務(wù)器;在該方法中,發(fā)布者和訂閱者之間的訂閱關(guān)系由服務(wù)器管理,但訂閱請(qǐng)求 的鑒權(quán)和審核依然由發(fā)布者驗(yàn)證;
[0007] 該方法具體包括以下步驟:
[0008] S1:發(fā)布者向服務(wù)器出席自己當(dāng)前狀態(tài)信息,服務(wù)器記錄該發(fā)布者的狀態(tài)信息;
[0009] S2:訂閱者向服務(wù)器發(fā)送訂閱請(qǐng)求,請(qǐng)求發(fā)布者提供消息服務(wù);
[0010] S3:服務(wù)器收到訂閱者的訂閱請(qǐng)求后,判斷發(fā)布者當(dāng)前狀態(tài),若發(fā)布者休眠,則告 知該訂閱者,請(qǐng)下次重試;若發(fā)布者在線,則向發(fā)布者發(fā)送訂閱請(qǐng)求;
[0011] S4:發(fā)布者驗(yàn)證訂閱請(qǐng)求,若驗(yàn)證通過(guò),則發(fā)送訂閱響應(yīng)給服務(wù)器;
[0012] S5:服務(wù)器收到訂閱響應(yīng)后,添加該訂閱者至訂閱列表,并轉(zhuǎn)發(fā)訂閱響應(yīng)給訂閱 者;
[0013] S6:訂閱成功后,發(fā)布者發(fā)布消息給服務(wù)器,服務(wù)器查詢管理的訂閱列表,并向列 表中所有已訂閱的訂閱者發(fā)布消息;
[0014] S7:若訂閱者需要取消該消息服務(wù),則向服務(wù)器發(fā)送取消訂閱的請(qǐng)求;
[0015] S8:服務(wù)器收到訂閱者取消訂閱的請(qǐng)求,則查詢訂閱列表并刪除該訂閱者,并判斷 發(fā)布者當(dāng)前狀態(tài),若發(fā)布者已休眠,等待其喚醒后再發(fā)送取消訂閱請(qǐng)求,并進(jìn)行下一步;若 發(fā)布者未休眠,則發(fā)送取消訂閱請(qǐng)求給發(fā)布者;
[0016] S9:發(fā)布者驗(yàn)證取消訂閱請(qǐng)求,驗(yàn)證通過(guò),則發(fā)送響應(yīng)給服務(wù)器,并不再發(fā)布該消 息。
[0017] 進(jìn)一步,在本方法中,發(fā)布者被訂閱但休眠時(shí),會(huì)向服務(wù)器出席休眠狀態(tài)并告知休 眠時(shí)間和數(shù)據(jù)有效時(shí)間,此時(shí)取消訂閱請(qǐng)求的鑒權(quán)和審核由服務(wù)器代為管理,并在數(shù)據(jù)有 效期內(nèi)由服務(wù)器代為發(fā)布數(shù)據(jù)。
[0018] 進(jìn)一步,在本方法中,當(dāng)存在多個(gè)訂閱者訂閱相同的內(nèi)容時(shí),發(fā)布者僅需向服務(wù)器 發(fā)布一次數(shù)據(jù),由服務(wù)器根據(jù)發(fā)布/訂閱關(guān)系將數(shù)據(jù)轉(zhuǎn)發(fā)給多個(gè)訂閱者。
[0019] 進(jìn)一步,該方法可讓發(fā)布者不僅支持基于事件的發(fā)布,同時(shí)還支持周期性數(shù)據(jù)的 發(fā)布;所述事件類型包括但不限于以下內(nèi)容:超出設(shè)定的數(shù)據(jù)上限、低于設(shè)定的數(shù)據(jù)下限、 連續(xù)兩次采集的數(shù)據(jù)變化量超出了預(yù)設(shè)范圍。
[0020] 進(jìn)一步,該發(fā)布/訂閱服務(wù)方法是基于對(duì)象設(shè)計(jì)的,對(duì)于發(fā)布者而言內(nèi)部會(huì)存在多 種發(fā)布對(duì)象,對(duì)象會(huì)有多種屬性,訂閱關(guān)系是針對(duì)某個(gè)發(fā)布對(duì)象中的某個(gè)屬性發(fā)起的;所述 設(shè)計(jì)對(duì)象類型包括但不限于以下3種類型:節(jié)點(diǎn)數(shù)據(jù)服務(wù)對(duì)象、節(jié)點(diǎn)休眠管理對(duì)象和服務(wù)器 訂閱關(guān)系管理對(duì)象。
[0021] 本發(fā)明的有益效果在于:
[0022] 1)能夠降低發(fā)布者的復(fù)雜度,適用于資源受限的節(jié)點(diǎn)。對(duì)于發(fā)布者而言,不需要維 護(hù)復(fù)雜的發(fā)布/訂閱關(guān)系,降低了發(fā)布者的復(fù)雜性,從而在實(shí)現(xiàn)過(guò)程中降低了發(fā)布者對(duì)硬件 資源的要求,適用于資源受限的傳感器節(jié)點(diǎn),可實(shí)現(xiàn)輕量化。
[0023] 2)能夠降低發(fā)布者發(fā)送的數(shù)據(jù)量。若發(fā)布/訂閱關(guān)系不在服務(wù)器中維護(hù),發(fā)布者向 多個(gè)訂閱者發(fā)布相同的內(nèi)容時(shí),發(fā)布者需要針對(duì)每個(gè)訂閱者發(fā)送一次數(shù)據(jù)。改進(jìn)后的發(fā)布/ 訂閱方法發(fā)布/訂閱關(guān)系由服務(wù)器管理和維護(hù)。對(duì)于發(fā)布者而言,如果存在多個(gè)訂閱者訂閱 相同的數(shù)據(jù),發(fā)布者僅需向XMPP服務(wù)器發(fā)送一次發(fā)布數(shù)據(jù),在XMPP服務(wù)器收到發(fā)布數(shù)據(jù)后, 服務(wù)器根據(jù)的發(fā)布/訂閱關(guān)系將數(shù)據(jù)轉(zhuǎn)發(fā)給不同的訂閱者,從而降低了傳感網(wǎng)內(nèi)的數(shù)據(jù)發(fā) 送量,也能夠在一定程度上為傳感器節(jié)點(diǎn)節(jié)省能量。
[0024] 3)能夠支持具備休眠功能的傳感器節(jié)點(diǎn)。如果發(fā)布/訂閱關(guān)系由發(fā)布者自己維護(hù), 當(dāng)發(fā)布者處于休眠狀態(tài)中,訂閱者在訂閱或取消訂閱關(guān)系時(shí)都將失敗且有無(wú)可預(yù)期的情況 發(fā)生。若采用該發(fā)布/訂閱方法,由于訂閱者和者之間的關(guān)系由XMPP服務(wù)器維護(hù),在發(fā)布者 處于休眠狀態(tài)下時(shí),服務(wù)器可代發(fā)布者建立或解除訂閱關(guān)系,等下次節(jié)點(diǎn)喚醒后由服務(wù)器 通知發(fā)布者訂閱關(guān)系的改變情況;并且服務(wù)器在節(jié)點(diǎn)休眠時(shí)告知休眠時(shí)間和消息有效時(shí) 間,可以在消息有效時(shí)間內(nèi)代為發(fā)布消息。
【附圖說(shuō)明】
[0025] 為了使本發(fā)明的目的、技術(shù)方案和有益效果更加清楚,本發(fā)明提供如下附圖進(jìn)行 說(shuō)明:
[0026] 圖1為本發(fā)明的XMPP發(fā)布/訂閱服務(wù)方法流程圖;
[0027] 圖2為XMPP發(fā)布/訂閱服務(wù)方法應(yīng)用場(chǎng)景圖;
[0028] 圖3為訂閱者向正常工作發(fā)布者發(fā)起訂閱/取消訂閱流程圖;
[0029] 圖4為訂閱者向休眠發(fā)布者發(fā)起訂閱流程圖;
[0030] 圖5為訂閱者向休眠發(fā)布者取消訂閱流程圖;
[0031 ]圖6為發(fā)布者向多個(gè)訂閱者發(fā)布消息流程圖。
【具體實(shí)施方式】
[0032]下面將結(jié)合附圖,對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行詳細(xì)的描述。
[0033]在基于XMPP協(xié)議的工業(yè)測(cè)控網(wǎng)絡(luò)中,發(fā)布者與訂閱者之間訂閱關(guān)系的管理和維護(hù) 由XMPP服務(wù)器統(tǒng)一承擔(dān),而不僅僅作為數(shù)據(jù)轉(zhuǎn)發(fā)的通道。圖1為本發(fā)明的XMPP發(fā)布/訂閱服 務(wù)方法流程圖,本發(fā)明提供的方法具體實(shí)現(xiàn)過(guò)程如下:
[0034] 一、發(fā)布/訂閱流程說(shuō)明
[0035]圖2為XMPP發(fā)布/訂閱服務(wù)方法應(yīng)用場(chǎng)景圖,XMPP發(fā)布/訂閱服務(wù)方法不僅支持無(wú) 線傳感網(wǎng)現(xiàn)場(chǎng)網(wǎng)絡(luò)戶端之間的發(fā)布/訂閱,也支持互聯(lián)網(wǎng)客戶端通過(guò)互聯(lián)網(wǎng)網(wǎng)絡(luò)連接服務(wù) 器實(shí)現(xiàn)互聯(lián)網(wǎng)客戶端和現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端之間的發(fā)布/訂閱。其中,實(shí)線箭頭代表發(fā)布/訂閱 路線,虛線代表網(wǎng)絡(luò)連接。
[0036]圖3是本發(fā)明訂閱者向正常工作發(fā)布者發(fā)起訂閱/取消訂閱流程圖,具體步驟如 下:
[0037] Setpl:訂閱者發(fā)送訂閱請(qǐng)求到服務(wù)器,服務(wù)器將訂閱請(qǐng)求轉(zhuǎn)發(fā)者發(fā)布者;
[0038] Setp2:發(fā)布者驗(yàn)證訂訂閱請(qǐng)求,驗(yàn)證通過(guò),發(fā)送訂閱響應(yīng)給服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)至 發(fā)布者;
[0039] Setp3:發(fā)布者周期發(fā)布信息至服務(wù)器,服務(wù)器根據(jù)訂閱關(guān)系轉(zhuǎn)發(fā)消息到所有訂閱 者;
[0040] Setp4:訂閱者發(fā)送取消訂閱請(qǐng)求至服務(wù)器,服務(wù)器直接回復(fù)取消訂閱響應(yīng);
[0041] Setp5:服務(wù)器發(fā)送取消訂閱請(qǐng)求給發(fā)布者,發(fā)布者驗(yàn)證后回復(fù)服務(wù)器取消訂閱響 應(yīng)。
[0042]圖4是本發(fā)明訂閱者向休眠發(fā)布者發(fā)起訂閱流程圖,具體步驟如下:
[0043] Stepl:發(fā)布者發(fā)送進(jìn)入休眠消息(攜帶休眠時(shí)長(zhǎng))至服務(wù)器,聲明進(jìn)入休眠狀態(tài)。 [0044] Step2:發(fā)布者向服務(wù)器發(fā)送訂閱請(qǐng)求,請(qǐng)求訂閱處于休眠狀態(tài)下發(fā)布者提供的服 務(wù),服務(wù)器直接向訂閱者回復(fù)訂閱響應(yīng),聲明被訂閱者當(dāng)前處于休眠狀態(tài),同時(shí)指明還將繼 續(xù)處于休眠狀態(tài)的時(shí)長(zhǎng);
[0045] Step3:發(fā)布者發(fā)送停止休眠消息至服務(wù)器,聲明停止休眠;
[0046] Step4:訂閱者發(fā)送訂閱請(qǐng)求到服務(wù)器,服務(wù)器將訂閱請(qǐng)求轉(zhuǎn)發(fā)者發(fā)布者;
[0047] Setp5:發(fā)布者驗(yàn)證訂訂閱請(qǐng)求,驗(yàn)證通過(guò),發(fā)送訂閱響應(yīng)給服務(wù)器,服務(wù)器轉(zhuǎn)發(fā)至 發(fā)布者;
[0048] Step6:發(fā)布者周期發(fā)布信息至服務(wù)器,服務(wù)器根據(jù)訂閱關(guān)系轉(zhuǎn)發(fā)消息到所有訂閱 者。
[0049]圖5是本發(fā)明訂閱者向休眠發(fā)布者取消訂閱流程圖,具體步驟如下:
[0050] Stepl:發(fā)布者發(fā)送進(jìn)入休眠消息(攜帶休眠時(shí)長(zhǎng))至服務(wù)器,聲明進(jìn)入休眠狀態(tài);
[0051] Setp2:訂閱者發(fā)送取消訂閱請(qǐng)求至服務(wù)器,服務(wù)器直接回復(fù)取消訂閱響應(yīng);
[0052] Step3:發(fā)布者發(fā)送停止休眠消息至服務(wù)器,聲明停止休眠;
[0053] Setp4:服務(wù)器發(fā)送取消訂閱請(qǐng)求給發(fā)布者,發(fā)布者驗(yàn)證后回復(fù)服務(wù)器取消訂閱響 應(yīng)。
[0054]圖6為本發(fā)明發(fā)布者向多個(gè)訂閱者發(fā)布消息流程圖,發(fā)布者周期發(fā)布消息至服務(wù), 服務(wù)器根據(jù)訂閱關(guān)系將消息依次發(fā)送至所有訂閱者。
[0055] 對(duì)于異常情況處理包含以下:
[0056] 1.發(fā)布者驗(yàn)證訂閱請(qǐng)求失敗
[0057]原因包括訂閱者權(quán)限不夠、被訂閱服務(wù)/資源不存在等。
[0058] 2.訂閱者重復(fù)訂閱
[0059]重復(fù)訂閱由服務(wù)器來(lái)出來(lái),服務(wù)器每次在轉(zhuǎn)發(fā)訂閱請(qǐng)求時(shí),需先驗(yàn)證訂閱關(guān)系是 否已經(jīng)存在,在訂閱關(guān)系不存在的情況下才發(fā)起轉(zhuǎn)發(fā)。
[0060] 3.被取消的訂閱關(guān)系不存在 [0061]由服務(wù)器直接處理。
[0062]二、語(yǔ)法及對(duì)象設(shè)計(jì) [0063] 1.對(duì)象設(shè)計(jì)
[0064] 1.1節(jié)點(diǎn)數(shù)據(jù)服務(wù)對(duì)象
[0065] 數(shù)據(jù)服務(wù)對(duì)象對(duì)其他客戶端獲取本地?cái)?shù)據(jù)提供服務(wù),獲取數(shù)據(jù)的方式可為read、 write和pubsub,對(duì)象屬性包擴(kuò)outvalue、unit和act ion等等,具體如表1所示。
[0066] 表1:節(jié)點(diǎn)數(shù)據(jù)服務(wù)對(duì)象屬性
[0068] 1.2節(jié)點(diǎn)休眠管理對(duì)象
[0069] 節(jié)點(diǎn)休眠管理對(duì)象為節(jié)點(diǎn)實(shí)現(xiàn)休眠功能提供支持。
[0070] 表2:節(jié)點(diǎn)休眠管理對(duì)象屬性
[0072] 1.3服務(wù)器發(fā)布/訂閱關(guān)系管理對(duì)象
[0073]服務(wù)器發(fā)布/訂閱關(guān)系管理對(duì)象為管理發(fā)布者和訂閱者之間的發(fā)布/訂閱關(guān)系提 供支持。
[0074]表3:服務(wù)器發(fā)布/訂閱關(guān)系管理
[0079] 2、發(fā)布/訂閱XML語(yǔ)法:
[0080]在XMPP數(shù)據(jù)服務(wù)協(xié)議語(yǔ)法基礎(chǔ)上增加〈item/〉元素對(duì)發(fā)布/訂閱功能提供支持。該 元素具備的屬性為 from,to,ob jectName,ob」6(:1:10,&1:1:冰&1116和七5^6。
[0081 ] From和to屬性表明訂閱請(qǐng)求/響應(yīng)的發(fā)送方或接收方。A、訂閱者向服務(wù)器發(fā)送的 訂閱請(qǐng)求中item元素不包含from屬性,需包含to屬性表明發(fā)布者的j id; B、服務(wù)器向發(fā)布者 發(fā)送的訂閱請(qǐng)求不包含to屬性,需包含from屬性表明訂閱者的jid;C、發(fā)布者向服務(wù)器發(fā)送 的訂閱響應(yīng)中包含from屬性,需包含to屬性表明訂閱者j i d; D、服務(wù)器向訂閱者發(fā)送的訂閱 響應(yīng)中不包含to屬性,需包含from屬性表明發(fā)布者的jid。
[0082] objectName和objectName屬性表明數(shù)據(jù)服務(wù)對(duì)象的類名和屬性實(shí)例ID。在item元 素中應(yīng)至少包含其中的一個(gè)屬性。A、只包含objectName屬性表明訂閱者意圖向某一類數(shù)據(jù) 服務(wù)對(duì)象發(fā)起訂閱;B、只包含objectID屬性時(shí)表明訂閱者意圖向末一個(gè)特定的數(shù)據(jù)服務(wù)對(duì) 象發(fā)起訂閱。
[0083] attrName屬性表明訂閱者要訂閱的屬性名稱。
[0084] Type屬性表明訂閱者訂閱的方式為周期性訂閱或基于事件的訂閱。
[0085] 本發(fā)明提供的一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法能夠在滿 足工業(yè)測(cè)控網(wǎng)絡(luò)的要求條件下,使發(fā)布者和訂閱者之間的訂閱關(guān)系由服務(wù)器管理,同時(shí)能 支持具備休眠功能節(jié)點(diǎn)的發(fā)布/訂閱服務(wù),能夠降低發(fā)布者實(shí)現(xiàn)發(fā)布功能的復(fù)雜度,節(jié)省工 業(yè)測(cè)控網(wǎng)絡(luò)的能量開(kāi)銷。
[0086] 最后說(shuō)明的是,以上優(yōu)選實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管通 過(guò)上述優(yōu)選實(shí)施例已經(jīng)對(duì)本發(fā)明進(jìn)行了詳細(xì)的描述,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在 形式上和細(xì)節(jié)上對(duì)其作出各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書(shū)所限定的范圍。
【主權(quán)項(xiàng)】
1. 一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,其特征在于: 該方法中的通信實(shí)體包括訂閱者、發(fā)布者和服務(wù)器;該方法不僅支持工業(yè)測(cè)控現(xiàn)場(chǎng)網(wǎng) 絡(luò)客戶端之間的發(fā)布/訂閱,也支持互聯(lián)網(wǎng)客戶端通過(guò)互聯(lián)網(wǎng)網(wǎng)絡(luò)連接服務(wù)器實(shí)現(xiàn)互聯(lián)網(wǎng) 客戶端與現(xiàn)場(chǎng)網(wǎng)絡(luò)客戶端之間的發(fā)布/訂閱;在該方法中,發(fā)布者和訂閱者之間的訂閱關(guān)系 由服務(wù)器管理,但訂閱請(qǐng)求的鑒權(quán)和審核依然由發(fā)布者驗(yàn)證; 該方法具體包括以下步驟: SI:發(fā)布者向服務(wù)器出席自己當(dāng)前狀態(tài)信息,服務(wù)器記錄該發(fā)布者的狀態(tài)信息; S2:訂閱者向服務(wù)器發(fā)送訂閱請(qǐng)求,請(qǐng)求發(fā)布者提供消息服務(wù); S3:服務(wù)器收到訂閱者的訂閱請(qǐng)求后,判斷發(fā)布者當(dāng)前狀態(tài),若發(fā)布者休眠,則告知該 訂閱者,請(qǐng)下次重試;若發(fā)布者在線,則向發(fā)布者發(fā)送訂閱請(qǐng)求; S4:發(fā)布者驗(yàn)證訂閱請(qǐng)求,若驗(yàn)證通過(guò),則發(fā)送訂閱響應(yīng)給服務(wù)器; S5:服務(wù)器收到訂閱響應(yīng)后,添加該訂閱者至訂閱列表,并轉(zhuǎn)發(fā)訂閱響應(yīng)給訂閱者; S6:訂閱成功后,發(fā)布者發(fā)布消息給服務(wù)器,服務(wù)器查詢管理的訂閱列表,并向列表中 所有已訂閱的訂閱者發(fā)布消息; S7:若訂閱者需要取消該消息服務(wù),則向服務(wù)器發(fā)送取消訂閱的請(qǐng)求; S8:服務(wù)器收到訂閱者取消訂閱的請(qǐng)求,則查詢訂閱列表并刪除該訂閱者,并判斷發(fā)布 者當(dāng)前狀態(tài),若發(fā)布者已休眠,等待其喚醒后再發(fā)送取消訂閱請(qǐng)求,并進(jìn)行下一步;若發(fā)布 者未休眠,則發(fā)送取消訂閱請(qǐng)求給發(fā)布者; S9:發(fā)布者驗(yàn)證取消訂閱請(qǐng)求,驗(yàn)證通過(guò),則發(fā)送響應(yīng)給服務(wù)器,并不再發(fā)布該消息。2. 根據(jù)權(quán)利要求1所述的一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,其 特征在于:在本方法中,發(fā)布者被訂閱但休眠時(shí),會(huì)向服務(wù)器出席休眠狀態(tài)并告知休眠時(shí)間 和數(shù)據(jù)有效時(shí)間,此時(shí)取消訂閱請(qǐng)求的鑒權(quán)和審核由服務(wù)器代為管理,并在數(shù)據(jù)有效期內(nèi) 由服務(wù)器代為發(fā)布數(shù)據(jù)。3. 根據(jù)權(quán)利要求1所述的一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,其 特征在于:在本方法中,當(dāng)存在多個(gè)訂閱者訂閱相同的內(nèi)容時(shí),發(fā)布者僅需向服務(wù)器發(fā)布一 次數(shù)據(jù),由服務(wù)器根據(jù)發(fā)布/訂閱關(guān)系將數(shù)據(jù)轉(zhuǎn)發(fā)給多個(gè)訂閱者。4. 根據(jù)權(quán)利要求1所述的一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,其 特征在于:該方法可讓發(fā)布者不僅支持基于事件的發(fā)布,同時(shí)還支持周期性數(shù)據(jù)的發(fā)布;所 述事件類型包括但不限于以下內(nèi)容:超出設(shè)定的數(shù)據(jù)上限、低于設(shè)定的數(shù)據(jù)下限、連續(xù)兩次 采集的數(shù)據(jù)變化量超出了預(yù)設(shè)范圍。5. 根據(jù)權(quán)利要求1所述的一種工業(yè)測(cè)控網(wǎng)絡(luò)中基于XMPP協(xié)議的發(fā)布/訂閱服務(wù)方法,其 特征在于:該發(fā)布/訂閱服務(wù)方法是基于對(duì)象設(shè)計(jì)的,對(duì)于發(fā)布者而言內(nèi)部會(huì)存在多種發(fā)布 對(duì)象,對(duì)象會(huì)有多種屬性,訂閱關(guān)系是針對(duì)某個(gè)發(fā)布對(duì)象中的某個(gè)屬性發(fā)起的;所述設(shè)計(jì)對(duì) 象類型包括但不限于以下3種類型:節(jié)點(diǎn)數(shù)據(jù)服務(wù)對(duì)象、節(jié)點(diǎn)休眠管理對(duì)象和服務(wù)器訂閱關(guān) 系管理對(duì)象。
【文檔編號(hào)】H04L29/06GK105959165SQ201610559625
【公開(kāi)日】2016年9月21日
【申請(qǐng)日】2016年7月15日
【發(fā)明人】王平, 劉玉強(qiáng), 王恒
【申請(qǐng)人】重慶郵電大學(xué)