一種基於mqtt實現狀態呈現的方法
2023-07-29 19:10:41
一種基於mqtt實現狀態呈現的方法
【專利摘要】本發明公開了一種基於MQTT實現狀態呈現的方法,其包括:步驟1、接收第一客戶端向第二客戶端發送的狀態消息;步驟2、對需要緩存的狀態消息進行刷新,所述刷新為按照時間順序保留最新的狀態消息而刪除較早的狀態消息;步驟3、將所述最新的狀態消息儲存至緩存區;步驟4、將所述緩存區儲存的最新的狀態消息推送至第二客戶端。本發明還公開了一種基於MQTT實現狀態呈現的系統,其包括狀態消息接收單元、狀態消息刷新單元、狀態消息緩衝單元和狀態消息推送單元。本發明基於MQTT實現狀態呈現,繼承了MQTT輕量級的優點的同時通過只緩存最後一個狀態消息的機制保證了狀態消息的有效性。
【專利說明】-種基於MQTT實現狀態呈現的方法
【技術領域】
[0001] 本發明涉及一種基於MQTT實現狀態呈現的方法,特別是涉及一種基於MQTT實現 狀態呈現的方法。
【背景技術】
[0002] 狀態呈現(Presence)業務是指一個用戶或者客戶端向其他用戶發布自己當前的 通訊狀態。例如,它可以發布當前它正空閒或者正忙。其他用戶和該用戶通訊時,這個發布 的狀態能及時提示他們當前的通訊可能性以及意願等。目前最常用的方式是:在即時通訊 客戶端上,為用戶的每種狀態顯示一個清晰明了的圓標以及響應的文字。狀態呈現的應用 主要包括個人應用和行業(群組)應用:
[0003] 其中,個人應用大致包括:
[0004] 1、地址本的個性化:有了個性化的地址本信息,由機主來控制在對方地址本裡的 信息。
[0005] 2、狀態可變更:可設定或通知別人目前自己的狀態(開機、關機、出國、忙碌、開 會、睡覺)
[0006] 3、心情表現(多彩籤名):目前的心情如何,讓個性化籤名凸現自我。
[0007] 個性頭像:照片、卡通、awatar應用等
[0008] 4、事件通知:通知好友重要事件
[0009] 5、發布信息:發布住房、旅遊召集等信息
[0010] 行業(群組)應用大致包括:新聞、天氣預報,股票信息,電視、電影預告,優惠通 知,群組活動通告,話費等的查詢。
[0011] 現有技術中實現狀態呈現的方法主要有以下二種:
[0012] 一、XCAP 協議
[0013] XML 配置訪問協議 XCAP (The XML Configuration Access Protocol)是一種應用層 協議,它允許一個客戶端來讀、寫、修改和刪除應用程式配置數據存儲在伺服器上的XML格 式。
[0014] SMPLE規範是在2001年2月由IETF SMPLE工作組正式提出的,全稱為SIP Instant Messaging and Presence Leveraging Extensions (針對即時消息和呈現業務的利 用擴展的會話初始化協議),是SIP協議針對頂/presence的擴展。頂PLE是目前為止制定 的較為完善的一個規範,微軟和IBM都致力於在它們的即時通訊系統中實現這個協議。
[0015] SMPLE符合RFC2778提出的presence模型,其結構圖如圖1所示:
[0016] 註:上面的實體都是功能實體,與實際實現中的物理實體往往有差別。
[0017] 各功能實體如下:
[0018] 1、Presence Service :接收、存儲和分發 presence information。Presence Service既可以是一個物理實體上的server,也可以只是presentity和watcher之間的直 接通信。在具體實現中前者比較常見,後者是P2P的模式。
[0019] 2、Presentity :用於提供 presence information 給 Presence Service。
[0020] 3、Watcher :向 Presence Service 請求獲取 Presentity 的 presence information 或者自身的 watcher information。
[0021] 4、Principal :指單個的人、程序或者設備,也可以是人、程序、設備的集合體。對於 Presence Service 來說,各個 Principal 是不同的。
[0022] 5、Presence User Agent :為Principal 提供手段來操作 0個或者多個Presentity, Principal 操作 Presence User Agent 改變Presentity 的狀態。是Principal 和 Presentity 交互的 interface。
[0023] 6、Watcher User Agent :類似 Presence User Agent,Principal 通過其來操作 0 個 或多個Watcher,Watcher收到Presentity的新狀態之後也通過Watcher User Agent呈現 給 Principal〇
[0024] 7、Presence Protocol :定義了 Presentity 和 Presence Service,Watcher 和 Presence Service之間交換消息的一組標準。
[0025] 在具體的實現中最常見的是把Presence Service實現為一個Presence Server, Presence User Agent 和 Presentity 組合在一起,Watcher 和 Watcher User Agent 組合在一 起,由一個終端來同時支持這兩種組合體,這樣,一個終端就既能訂閱別人的也能發布自己 的 presence information。
[0026] 通過XCAP協議實現狀態呈現的缺點在於:
[0027] 1.基於SIP協議來實現,協議流程比較複雜,SIP上的NAT穿越及防火牆的問題, 同樣也存在於SMPLE上。
[0028] 2.基於XML文本來標識狀態,狀態的標識代價比較高。
[0029] 3.協議交互流程比較複雜。
[0030] 4.安裝部署XCAP的系統需要的代價比較高,對硬體有比較高的要求;
[0031] 5.對於終端來說消耗的流量和電量比較大。
[0032] 二、XMPP 協議
[0033] XMPP (Extensible Messaging and Presence Protocol 可擴展通訊和表不協議)也 是基於XML協議的通訊協議,前身是Jabber,目前已由IETF國際標準化組織完成了標準化 工作,利用XMPP的推送機制也可以實現狀態呈現的功能。
[0034] 通過XMPP協議實現狀態呈現的缺點在於:
[0035] 1、XMPP協議較複雜;
[0036] 2、XMPP協議的冗餘信息比多,是基於文本的XML來實現的。
[0037] 3、對於終端來說消耗的流量和電量比較大;
[0038] 4、部署硬體成本高。
[0039] MQTT (Message Queuing Telemetry Transport,消息隊列遙測傳輸)是 IBM 開發的 一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把 所有聯網物品和外部連接起來,被用來當做傳感器和致動器(比如通過Twitter讓房屋聯 網)的通信協議。圖2是MQTT的基本交互流程,Broker是MQTT的伺服器,每個客戶端都 可以向對應的Topic發布消息,只要有客戶端訂閱了對應的Topic就可以收到其他客戶端 發布的消息。
[0040] 每個MQTT命令消息的消息頭都包含一個固定的報頭。有些消息需要一個可變的 報頭和一個payload (如表1所示)。
[0041] 表1、MQTT消息格式
[0042]
【權利要求】
1. 一種基於MQTT實現狀態呈現的方法,其特徵在於,其包括以下步驟: 步驟1、接收第一客戶端向第二客戶端發送的狀態消息; 步驟2、對需要緩存的狀態消息進行刷新,所述刷新為按照時間順序保留最新的狀態消 息而刪除較早的狀態消息; 步驟3、將所述最新的狀態消息儲存至緩存區; 步驟4、將所述緩存區儲存的最新的狀態消息推送至第二客戶端。
2. 根據權利要求1所述的基於MQTT實現狀態呈現的方法,其特徵在於,所述需要緩存 的狀態消息為在第二客戶端未上線時,第一客戶端向第二客戶端發送的狀態消息。
3. 根據權利要求1所述的基於MQTT實現狀態呈現的方法,其特徵在於,如果沒有所述 較早的狀態消息,則狀態消息刷新單元不進行刷新操作。
4. 根據權利要求1所述的基於MQTT實現狀態呈現的方法,其特徵在於,將所述緩存區 儲存的最新的狀態消息推送至第二客戶端後,第二客戶端返回推送確認信息,如未返回所 述推送確認信息,則再次向第二客戶端推送所述最新的狀態消息。
5. 根據權利要求1所述的基於MQTT實現狀態呈現的方法,其特徵在於,所述步驟1之 前還包括以下步驟: 接收第二客戶端訂閱的主題信息並向該第二客戶端發送訂閱確認信息,所述第一客戶 端向第二客戶端發送的狀態消息對應於所述主題信息。
6. -種基於MQTT實現狀態呈現的系統,其特徵在於,其包括: 狀態消息接收單元,用於接收第一客戶端向第二客戶端發送的狀態消息; 狀態消息刷新單元,用於對需要緩存的狀態消息進行刷新,所述刷新為按照時間順序 保留最新的狀態消息而刪除較早的狀態消息; 狀態消息緩衝單元,用於將所述最新的狀態消息儲存至緩存區; 狀態消息推送單元,用於將所述緩存區儲存的最新的狀態消息推送至第二客戶端。
7. 根據權利要求6所述的基於MQTT實現狀態呈現的系統,其特徵在於,所述需要緩存 的狀態消息為在第二客戶端未上線時,第一客戶端向第二客戶端發送的狀態消息。
8. 根據權利要求6所述的基於MQTT實現狀態呈現的系統,其特徵在於,如果沒有所述 較早的狀態消息,則狀態消息刷新單元不進行刷新操作
9. 根據權利要求6所述的基於MQTT實現狀態呈現的系統,其特徵在於,所述狀態消息 推送單元將所述緩存區儲存的最新的狀態消息推送至第二客戶端後,第二客戶端向狀態消 息推送單元返回推送確認信息,如未返回所述推送確認信息,則狀態消息推送單元再次向 第二客戶端推送所述最新的狀態消息。
10. 根據權利要求6所述的基於MQTT實現狀態呈現的系統,其特徵在於,所述基於 MQTT實現狀態呈現的系統進一步包括: 狀態消息訂閱單元,用於接收第二客戶端訂閱的主題信息並向該第二客戶端發送訂閱 確認信息,所述第一客戶端向第二客戶端發送的狀態消息對應於所述主題信息。
【文檔編號】H04L12/58GK104052653SQ201410283402
【公開日】2014年9月17日 申請日期:2014年6月23日 優先權日:2014年6月23日
【發明者】吳曉東, 顏君志, 梁生平, 黃昊, 左俊 申請人:廣東天波信息技術股份有限公司