本發(fā)明涉及互聯(lián)網通訊,具體涉及一種基于MQTT的消息插播方法。
背景技術:
目前的通訊技術,在新增一條消息時,多數(shù)是通過客戶端建立一個長連接的socket來監(jiān)聽服務端下發(fā)的消息,這種長連接很容易造成消息堵塞,不斷發(fā)送心跳會消耗流量,且連接數(shù)量受到限制。
MQTT通訊協(xié)議是為大量計算能力有限,且工作在低寬帶、不可靠的網絡的遠程傳感器或者控制通訊設計的協(xié)議,它具有如下特性:
1)使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應用程序耦合;
2)對負載內容屏蔽的消息傳輸;
3)使用TCP/IP提供網絡連接;
4)有三種消息發(fā)布服務質量:
“至多一次”,消息發(fā)布完全依賴底層TCP/IP網絡。會發(fā)生消息丟失或重復。這一級別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因為不久后還會有第二次發(fā)送。
“至少一次”,確保消息到達,但消息重復可能會發(fā)生。
“只有一次”,確保消息到達一次。這一級別可用于如下情況,在計費系統(tǒng)中,消息重復或丟失會導致不正確的結果。
小型傳輸,開銷很小(固定長度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網絡流量;
根據(jù)mqtt的特性,選擇mqtt協(xié)議來插播消息是一個非常理想的方法。
DES(Data Encryption Standard)是分組對稱密碼算法。DES采用了64位的分組長度和56位的密鑰長度,它將64位的輸入經過一系列變換得到64位的輸出。解密則使用了相同的步驟和相同的密鑰。DES的密鑰長度為64位,由于第n*8(n=1,2,…8)是校驗位,因此實際參與加密的長度為56位,密鑰空間含有2^56個密鑰。
DES算法利用多次組合替代算法和換位算法,分散和錯亂的相互作用,把明文編制成密碼強度很高的密文,它的加密和解密用的是同一算法。
DES算法,是一種乘積密碼,其在算法結構上主要采用了置換、代替、模二相加等函數(shù),通過輪函數(shù)迭代的方式來進行計算和工作。
DES算法也會使用到數(shù)據(jù)置換技術,主要有初始置換IP和逆初始置換IP^-1兩種類型。DES算法使用置換運算的目的是將原始明文的所有格式及所有數(shù)據(jù)全部打亂重排。而在輪加密函數(shù)中,即將數(shù)據(jù)全部打亂重排,同時在數(shù)據(jù)格式方面,將原有的32位數(shù)據(jù)格式,擴展成為48位數(shù)據(jù)格式,目的是為了滿足S盒組對數(shù)據(jù)長度和數(shù)據(jù)格式規(guī)范的要求。
一組數(shù)據(jù)信息經過一系列的非線性變換以后,很難從中推導出其計算的過程和使用的非線性組合;但是如果這組數(shù)據(jù)信息使用的是線性變換,計算就容易的多。在DES算法中,屬于非線性變換的計算過程只有S盒,其余的數(shù)據(jù)計算和變換都是屬于線性變換,所以DES算法安全的關鍵在于S盒的安全強度。此外,S盒和置換IP相互配合,形成了很強的抗差分攻擊和抗線性攻擊能力,其中抗差分攻擊能力更強一些。
技術實現(xiàn)要素:
本發(fā)明針對上述問題,提供了一種基于MQTT的消息插播方法。
本發(fā)明采用的技術方案是:一種基于MQTT的消息插播方法,包括以下步驟:
S1,終端啟動時,訂閱消息主題;
S2,用戶發(fā)布插播消息,消息經過DES加密;
S3,終端根據(jù)訂閱主題接收用戶發(fā)布的插播消息;
S4,終端接收插播消息,并進行DES解密;
S5,終端根據(jù)插播消息的屬性顯示在屏幕上。
進一步地,所述步驟S1還包括:
S11,連接MQTT:
生成連接字符串:指定消息代理主機的IP地址和MQTT分配的端口號,端口號缺省值為1883;設置連接屬性,包括客戶機的標識、訂閱類型、發(fā)送活動消息的間隔時間;
創(chuàng)建MQTT客戶機對象;
S12,向代理訂閱主題:訂閱是由MQTT對象處理,包括兩個數(shù)組參數(shù),即訂閱主題數(shù)組、服務質量數(shù)組。
更進一步地,所述步驟S2還包括:
S21,向數(shù)字標牌發(fā)布消息:直接使用MQTT提供的API函數(shù)publish,需要提供主題、消息、服務質量等參數(shù);
S22,接收來自代理的消息:為使應用接收到訂閱的消息,創(chuàng)建一個回調處理函數(shù),并且在MQTT客戶端注冊;
用MqttSimpleCallback接口創(chuàng)建簡單接口的對象,并實現(xiàn)connectionLost、deliveryComplete和messageArrived三個方法;
當與代理的連接意外終止時,就調用connectionLost方法;如果出現(xiàn)這種情況,則此方法試圖重新連接到代理;如果connectionLost方法無法重新連接,則會拋出異常來通知客戶機重新連接失敗;
messageArrived方法通知系統(tǒng)訂閱主題的消息已到達客戶端;
deliveryComplete方法表示發(fā)送是否完成;
S23,消息發(fā)布前需要DES加密。
更進一步地,所述步驟S3還包括:接收消息解密:數(shù)字標牌訂閱消息后,代理發(fā)布數(shù)字標牌訂閱的主題,數(shù)字標牌接收到發(fā)布的消息并解密。
更進一步地,所述步驟S4還包括:對相關代碼加密及解密。
更進一步地,所述步驟S5具體為:
終端接收到消息解密之后,根據(jù)消息內容里的播放速度、播放時間、是否追加插播消息、字體顏色、字體大小、字體停靠位置、透明度的屬性在終端上顯示示消息的內容。
本發(fā)明的優(yōu)點:
本發(fā)明使用的mqtt協(xié)議用在弱信號、低寬帶等環(huán)境下工作也可保證接收完整,而且消息經過DES加密,安全性得到保證,是mqtt協(xié)議和DES安全認證運用在數(shù)字標牌上是一種非常好的方法。
除了上面所描述的目的、特征和優(yōu)點之外,本發(fā)明還有其它的目的、特征和優(yōu)點。下面將參照圖,對本發(fā)明作進一步詳細的說明。
附圖說明
構成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。
圖1是本發(fā)明的一種基于MQTT的消息插播方法流程圖。
具體實施方式
為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
參考圖1,如圖1所示的一種基于MQTT的消息插播方法,包括以下步驟:
S1,終端(數(shù)字標牌)啟動時,訂閱消息主題;
S2,用戶發(fā)布插播消息,消息經過DES加密;
S3,終端根據(jù)訂閱主題接收用戶發(fā)布的插播消息;
S4,終端接收插播消息,并進行DES解密;
S5,終端根據(jù)插播消息的屬性顯示在屏幕上。
所述步驟S1還包括:
S11,連接MQTT:
生成連接字符串:指定消息代理主機的IP地址和MQTT分配的端口號,端口號缺省值為1883;設置連接屬性,包括客戶機的標識、訂閱類型、發(fā)送活動消息的間隔時間;
創(chuàng)建MQTT客戶機對象;
S12,向代理訂閱主題:訂閱是由MQTT對象處理,包括兩個數(shù)組參數(shù),即訂閱主題數(shù)組、服務質量數(shù)組。
所述步驟S2還包括:
S21,向數(shù)字標牌發(fā)布消息:直接使用MQTT提供的API函數(shù)publish,需要提供主題、消息、服務質量等參數(shù);
S22,接收來自代理的消息:為使應用接收到訂閱的消息,創(chuàng)建一個回調處理函數(shù),并且在MQTT客戶端注冊;
用MqttSimpleCallback接口創(chuàng)建簡單接口的對象,并實現(xiàn)connectionLost、deliveryComplete和messageArrived三個方法;
當與代理的連接意外終止時,就調用connectionLost方法;如果出現(xiàn)這種情況,則此方法試圖重新連接到代理;如果connectionLost方法無法重新連接,則會拋出異常來通知客戶機重新連接失敗;
messageArrived方法通知系統(tǒng)訂閱主題的消息已到達客戶端;
deliveryComplete方法表示發(fā)送是否完成;
S23,消息發(fā)布前需要DES加密。
所述步驟S3還包括:接收消息解密:數(shù)字標牌訂閱消息后,代理發(fā)布數(shù)字標牌訂閱的主題,數(shù)字標牌接收到發(fā)布的消息并解密。
所述步驟S4還包括:對相關代碼加密及解密。
所述步驟S5具體為:
終端接收到消息解密之后,根據(jù)消息內容里的播放速度、播放時間、是否追加插播消息、字體顏色、字體大小、字體??课恢?、透明度的屬性在終端上顯示示消息的內容。由于這些屬性值可以不一樣,所以終端可以展示出豐富的內容。
由于是通過mqtt協(xié)議來傳輸?shù)?,在弱信號、低寬帶環(huán)境都可以保證接收到,這樣客戶的體驗會更加完善。
本發(fā)明的基于MQTT的消息插播方法,終端(數(shù)字標牌)啟動時,訂閱消息主題如:cloudring/client/terminal/terminalId/#,其中terminalId為終端的具體值;
用戶發(fā)布插播消息,消息經過DES加密;
終端根據(jù)訂閱主題接收用戶發(fā)布的插播消息;
終端接收插播消息,并進行DES解密;
終端根據(jù)插播消息的屬性(字體、位置、顏色等)顯示在屏幕上。
現(xiàn)在很多的數(shù)字標牌,本身的wifi信號不強,如果是走http協(xié)議,則可能發(fā)生斷網的情況或者鏈接不通暢導致消息接收不到或者是不完整,這樣就會導致廣告的體驗效果差,本發(fā)明使用的mqtt協(xié)議用在弱信號、低寬帶等環(huán)境下工作也可保證接收完整,而且消息經過DES加密,安全性得到保證,是mqtt協(xié)議和DES安全認證運用在數(shù)字標牌上是一種非常好的方法。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。