基于mqtt主題訂閱機(jī)制的通信方法以及接入網(wǎng)關(guān)的制作方法
【技術(shù)領(lǐng)域】
[OOOU 本發(fā)明設(shè)及通訊領(lǐng)域,特別是設(shè)及一種基于MQTT主題訂閱機(jī)制的通信方法W及 接入網(wǎng)關(guān)。
【背景技術(shù)】
[0002] 即時(shí)通訊(Instantmessaging,簡(jiǎn)稱IM)是一個(gè)終端服務(wù),允許兩人或多人使用 網(wǎng)路即時(shí)的傳遞文字訊息、檔案、語音與視頻交流。即時(shí)通訊按使用用途分為企業(yè)即時(shí)通訊 和網(wǎng)站即時(shí)通訊,根據(jù)裝載的對(duì)象又可分為手機(jī)即時(shí)通訊和PC即時(shí)通訊,手機(jī)即時(shí)通訊代 表是短信,PC即時(shí)通訊代表是視頻。
[000引 MQTT(MessageQueuingTelemetryTransport,消息隊(duì)列巡測(cè)傳輸)是IBM開發(fā) 的一個(gè)即時(shí)通訊協(xié)議,有可能成為物聯(lián)網(wǎng)的重要組成部分。該協(xié)議支持所有平臺(tái),幾乎可W把所有聯(lián)網(wǎng)物品和外部連接起來,被用來當(dāng)做傳感器和致動(dòng)器(例如通過Twitter讓房屋 聯(lián)網(wǎng))的通信協(xié)議。
[0004] MQTT協(xié)議是為大量計(jì)算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器 和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,它具有W下主要的幾項(xiàng)特性:
[0005] 1)使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序禪合。
[0006] 2)對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸。
[0007] 3)使用TCP/IP提供網(wǎng)絡(luò)連接。
[000引 4)有S種消息發(fā)布服務(wù)質(zhì)量:
[0009] "至多一次",消息發(fā)布完全依賴底層TCP^P網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。該一 級(jí)別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因?yàn)椴痪煤筮€會(huì)有第二次 發(fā)送;
[0010] "至少一次",確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生;
[0011] "只有一次",確保消息到達(dá)一次。該一級(jí)別可用于如下情況,在計(jì)費(fèi)系統(tǒng)中,消息 重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。
[001引W小型傳輸,開銷很?。ü潭ㄩL(zhǎng)度的頭部是2字節(jié)),協(xié)議交換最小化,W降低網(wǎng) 絡(luò)流量。
[001引 6)使用LastWill和Testament特性通知有關(guān)各方客戶端異常中斷的機(jī)制。
[0014] 現(xiàn)有技術(shù)中分布式即時(shí)通信的方案,例如XMPP(可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議),即時(shí) 通信的機(jī)制為:客戶端連接至網(wǎng)關(guān),有一個(gè)單獨(dú)的路由服務(wù)(0)用于維護(hù)客戶端與網(wǎng)關(guān)的 連接關(guān)系(即哪個(gè)用戶連接的哪個(gè)服務(wù)器)。兩個(gè)網(wǎng)關(guān)上的用戶如果需要通信,則消息發(fā)送 方扣serl)所在的網(wǎng)關(guān)(A),必須從路由服務(wù)(0)查詢要收消息的用戶扣ser2)在哪個(gè)網(wǎng) 關(guān)炬)上,然后將消息轉(zhuǎn)發(fā)至接收消息的網(wǎng)關(guān)炬),網(wǎng)關(guān)炬)將消息轉(zhuǎn)發(fā)至接收消息的用戶 OJserf)。
[0015] 現(xiàn)有IMQnstantMessaging,即時(shí)通訊)即時(shí)通信方案大多比較復(fù)雜,特別是分布 式系統(tǒng)中的消息路由,往往需要維護(hù)一張?bào)w積較大的消息路由表,并且還設(shè)及到多服務(wù)器 尋址等問題。路由表的動(dòng)態(tài)更新,路由信息同步也是一個(gè)比較復(fù)雜的功能。
[0016] 針對(duì)相關(guān)技術(shù)中分布式即時(shí)通信應(yīng)用消息路由復(fù)雜的問題,目前尚未提出有效的 解決方案。
【發(fā)明內(nèi)容】
[0017] 針對(duì)相關(guān)技術(shù)中分布式即時(shí)通信應(yīng)用消息路由復(fù)雜的問題,本發(fā)明提供了一種基 于MQTT主題訂閱機(jī)制的通信方法化及接入網(wǎng)關(guān),用W解決上述技術(shù)問題。
[001引根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供了一種接入網(wǎng)關(guān),其中,該接入網(wǎng)關(guān)包括: 業(yè)務(wù)處理模塊IMService、內(nèi)部客戶端MQTTClientI、外部客戶端MQTTClientR和服務(wù)端 MQTTServer,其中,
[0019]IMService,用于向MQTTClientI注冊(cè)事件通知,W使所述MQTTClientI接收 到所述MQTTServer的消息時(shí),通知所述IMService;還用于使所述MQTTClientI向所述 MQTTServer訂閱主題;還用于創(chuàng)建MQTTClientR,W使所述MQTTClientR與對(duì)應(yīng)接入網(wǎng)關(guān)的 MQTTServer連接,并訂閱主題;
[0020]MQTTClientI,用于在接收到MQTTServer的消息時(shí),通知所述IMService;還用于 向MQTTServer訂閱主題,主題消息包括接入網(wǎng)關(guān)的用戶化er或者其他接入網(wǎng)關(guān)發(fā)送至所 述接入網(wǎng)關(guān)的消息;
[002UMQTTClientR,用于與對(duì)應(yīng)接入網(wǎng)關(guān)的MQTTServer連接,并向該MQTTServer訂閱 主題;
[002引MQTTServer,與化er進(jìn)行消息交互,為MQTTClientI和對(duì)應(yīng)接入網(wǎng)關(guān)的MQTTClientR支持主題訂閱機(jī)制。
[002引根據(jù)本發(fā)明的另一方面,本發(fā)明還提供了一種基于MQTT主題訂閱機(jī)制的通信方 法,其中,該方法包括;啟動(dòng)接入網(wǎng)關(guān)A與對(duì)應(yīng)的接入網(wǎng)關(guān)B中的IMService、MQTTClientI、 MQTTClientR、MQTTServer;其中,MQTTClientI向同一接入網(wǎng)關(guān)的MQTTServer訂閱主題, MQTTC1ientR與對(duì)應(yīng)的接入網(wǎng)關(guān)的MQTTServer連接,并訂閱主題;第一用戶在接入網(wǎng)關(guān)A 上線,第二用戶在接入網(wǎng)關(guān)B上線;基于接入網(wǎng)關(guān)A與接入網(wǎng)關(guān)B,第一用戶與第二用戶進(jìn) 行消息交互。
[0024] 優(yōu)選地,第一用戶在接入網(wǎng)關(guān)A上線包括:第一用戶連接接入網(wǎng)關(guān)A的 MQTTServer,并訂閱主題,主題消息包括接入網(wǎng)關(guān)A上全部與第一用戶交互的消息;第一用 戶向所述MQTTServer上報(bào)用戶上線消息,基于主題訂閱機(jī)制,MQTTClientI接收該用戶上 線消息,然后通知IMService。
[0025] 優(yōu)選地,第二用戶在接入網(wǎng)關(guān)B上線包括:第二用戶連接接入網(wǎng)關(guān)B的 MQTTServer,并訂閱主題,主題消息包括接入網(wǎng)關(guān)B上全部與第二用戶交互的消息;第二用 戶向所述MQTTServer上報(bào)用戶上線消息,基于主題訂閱機(jī)制,MQTTClientI接收該用戶上 線消息,然后通知IMService。
[0026] 優(yōu)選地,第一用戶在接入網(wǎng)關(guān)A上線之后,還包括:接入網(wǎng)關(guān)A的IMService 通過MQTTC1ienti向MQTTServer發(fā)布用戶上線通知,基于主題訂閱機(jī)制,接入網(wǎng)關(guān)B 的MQTTClientR接收該用戶上線通知,并通知接入網(wǎng)關(guān)B的IMService;接入網(wǎng)關(guān)B的 IMService在接入網(wǎng)關(guān)B上查找與第一用戶有業(yè)務(wù)往來的在線用戶,之后執(zhí)行W下步驟:
[0027] a)接入網(wǎng)關(guān)B的IMService調(diào)用MQTTClientR向接入網(wǎng)關(guān)A的MQTTServer訂閱 主題,主題消息包括在接入網(wǎng)關(guān)A上全部向所述在線用戶的對(duì)話消息;
[0028] b)接入網(wǎng)關(guān)B的IMService調(diào)用MQTTClientI向MQTTServer發(fā)布用戶上線推送 消息,基于主題訂閱機(jī)制,所述在線用戶接收該用戶上線推送消息;
[0029] C)接入網(wǎng)關(guān)B的IMService調(diào)用MQTTClientR向接入網(wǎng)關(guān)A的MQTTServer發(fā)布 訂閱通知,該訂閱通知用于通知接入網(wǎng)關(guān)A的MQTTClientR在接入網(wǎng)關(guān)B的MQTTServer訂 閱主題,主題消息包括在接入網(wǎng)關(guān)A上全部向第一用戶的對(duì)話。
[0030] 優(yōu)選地,基于接入網(wǎng)關(guān)A與接入網(wǎng)關(guān)B,第一用戶與第二用戶進(jìn)行消息交互,包括: 第二用戶向接入網(wǎng)關(guān)B的MQTTServer發(fā)布對(duì)話消息;基于主題訂閱機(jī)制,接入網(wǎng)關(guān)A的 MQTTClientR接收接入網(wǎng)關(guān)B的MQTTServer轉(zhuǎn)發(fā)的所述對(duì)話消息,所述MQTTClientR將 該對(duì)話消息通知接入網(wǎng)關(guān)A的IMService;接入網(wǎng)關(guān)A的IMService調(diào)用MQTTClientI向 MQTTServer發(fā)布所述對(duì)話消息,基于主題訂閱機(jī)制,第一用戶接收所述MQTTServer轉(zhuǎn)發(fā)的 所述對(duì)話消息。
[0031] 優(yōu)選地,所述方法還包括;同一接入網(wǎng)關(guān)上的兩個(gè)用戶,其中一個(gè)用戶向該接入網(wǎng) 關(guān)的MQTTServer發(fā)布對(duì)話消息,基于主題訂閱機(jī)制,另一用戶接收所述MQTTServer轉(zhuǎn)發(fā)的 該對(duì)話消息。
[0032] 本發(fā)明有益效果如下;
[0033] 本發(fā)明的技術(shù)方案基于MQTT的訂閱/發(fā)布機(jī)制,通用多用戶、多服務(wù)器間對(duì)一套 MQTTTopic主題的訂閱/發(fā)布,可省去復(fù)雜的消息路由功能,消息可基于服務(wù)器維護(hù)的訂 閱關(guān)系與基于該訂閱關(guān)系的消息轉(zhuǎn)發(fā),自行實(shí)現(xiàn)消息路由功能。從而不需維護(hù)消息路由表, 簡(jiǎn)化即時(shí)通信方案。
[0034] 上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說明書的內(nèi)容予W實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠 更明顯易懂,W下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0035] 圖1是根據(jù)本發(fā)明實(shí)施例的接入網(wǎng)關(guān)的結(jié)構(gòu)框圖;
[0036] 圖2是根據(jù)本發(fā)明實(shí)施例的基于MQTT主題訂閱機(jī)制的通信方法流程圖;
[0037] 圖3是根據(jù)本發(fā)明實(shí)施例的接入網(wǎng)關(guān)啟動(dòng)流程的示意圖;
[003引圖4是根據(jù)本發(fā)明實(shí)施例的接入網(wǎng)關(guān)停止流程的示意圖;
[0039] 圖5是根據(jù)本發(fā)明實(shí)施例的用戶上線流程的示意圖;
[0040] 圖6是根據(jù)本發(fā)明實(shí)施例的用戶間對(duì)話流程的示意圖;
[0041] 圖7是根據(jù)本發(fā)明實(shí)施例的用戶下線流程的示意圖。
【具體實(shí)施方式】
[0042] 為了解決相關(guān)技術(shù)中分布式即時(shí)通信應(yīng)用消息路由復(fù)雜的問題,本發(fā)明提供了一 種基于MQTT主題訂閱機(jī)制的通信方法W及接入網(wǎng)關(guān),W下結(jié)合附圖W及實(shí)施例,對(duì)本發(fā)明 進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用W解釋本發(fā)明,并不限定 本發(fā)明。
[0043] 實(shí)施例一
[0044] 本實(shí)施例提供了一種接入網(wǎng)關(guān),圖1是根據(jù)本發(fā)明實(shí)施例的接入網(wǎng)關(guān)的結(jié)構(gòu)框 圖,如圖1所示,該接入網(wǎng)關(guān)包括;IMService(業(yè)務(wù)處理模塊)、MQTTClientI(內(nèi)部客戶 端)、MQTTClientR(外部客戶端)和MQTTServer(服務(wù)端),其中,
[0045] IMService,是IM接入網(wǎng)關(guān)的業(yè)務(wù)處理模塊,負(fù)責(zé)IM接入網(wǎng)關(guān)的核屯、業(yè)務(wù)調(diào)度,包 括功能;用戶關(guān)系管理、接入網(wǎng)關(guān)與MQTTClientR映射管理、MQTTClientI與MQTTClientR 調(diào)用等。
[0046] 其功能是;用于向MQTTClientI注冊(cè)事件通知,W使所述MQTTClientI接收到 所述MQTTServer的消息時(shí),通知所述IMService ;還用于使所述MQTTClientI向所述 MQTTServer訂閱主題;還用于創(chuàng)建MQTTClientR, W使所述MQTTClientR與對(duì)應(yīng)接入網(wǎng)關(guān)的 MQTTServer連接,并訂閱主題。
[0047]MQTTC1ientI,是IM接入網(wǎng)關(guān)內(nèi)部通信的支持MQTT標(biāo)準(zhǔn)協(xié)議的客戶端,用于 IMService發(fā)送或接收本接入網(wǎng)關(guān)的消息。一個(gè)IM接入網(wǎng)關(guān)只有一個(gè)