長(zhǎng)連接消息的通信方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種通信方法及系統(tǒng),特別是涉及一種長(zhǎng)連接消息的通信方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)與計(jì)算機(jī)科技的發(fā)展,智能家居越來越熱門。為了能實(shí)時(shí)控制設(shè)備,一般設(shè)備和服務(wù)器之間采取長(zhǎng)連接的方式進(jìn)行實(shí)時(shí)通信。移動(dòng)終端通過APP,將消息發(fā)送給服務(wù)器,由服務(wù)器下發(fā)給設(shè)備。
[0003]現(xiàn)有技術(shù)普遍存在的問題是,移動(dòng)終端和服務(wù)器之間通信采用HTTP協(xié)議,而服務(wù)器和設(shè)備之間采用一條TCP通道進(jìn)行通信。由于移動(dòng)終端和服務(wù)器之間的通信往往是并發(fā)的,一次通信可能會(huì)有很多個(gè)請(qǐng)求,但是服務(wù)器和設(shè)備之間的TCP通道只有一個(gè),這樣就會(huì)帶來一個(gè)問題,即APP側(cè)一次發(fā)送多個(gè)請(qǐng)求,長(zhǎng)連接通道返回?cái)?shù)據(jù)的時(shí)候無法確定消息返回的先后順序,從而造成通信失敗。
【發(fā)明內(nèi)容】
[0004]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種長(zhǎng)連接消息的通信方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中處理并發(fā)請(qǐng)求時(shí)長(zhǎng)連接通道返回?cái)?shù)據(jù)的時(shí)候無法確定消息返回的先后順序,從而造成通信失敗的問題。
[0005]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種長(zhǎng)連接消息的通信方法,包括以下步驟:
[0006]采用HTTP短連接的形式與移動(dòng)終端側(cè)的APP進(jìn)行交互,獲取所述APP發(fā)出的請(qǐng)求;
[0007]為所述APP發(fā)出的請(qǐng)求分配消息ID ;
[0008]將已獲得消息ID的請(qǐng)求通過長(zhǎng)連接通道轉(zhuǎn)發(fā)給設(shè)備處理,并接收設(shè)備返回的相應(yīng)數(shù)據(jù);
[0009]將設(shè)備返回的相應(yīng)數(shù)據(jù)發(fā)送給所述APP。
[0010]優(yōu)選地,所述方法還包括:分配專用線程以處理具有消息ID的請(qǐng)求。
[0011 ] 優(yōu)選地,所述方法還包括:記錄具有消息ID的請(qǐng)求的處理狀態(tài),為所述APP發(fā)出的請(qǐng)求分配消息ID時(shí),根據(jù)前一請(qǐng)求的處理狀態(tài),判斷當(dāng)前請(qǐng)求是否可以被發(fā)送,當(dāng)前請(qǐng)求可以被發(fā)送時(shí)為當(dāng)前請(qǐng)求分配消息ID,否則返回阻塞。
[0012]優(yōu)選地,所述請(qǐng)求的處理狀態(tài)包括:請(qǐng)求的發(fā)送狀態(tài)和設(shè)備返回相應(yīng)數(shù)據(jù)的接收狀態(tài)。
[0013]優(yōu)選地,所述方法還包括:存儲(chǔ)具有所述消息ID的請(qǐng)求對(duì)應(yīng)的長(zhǎng)連接通道信息。
[0014]基于上述目的,本發(fā)明還提供一種長(zhǎng)連接消息的通信系統(tǒng),包括:
[0015]APP連接模塊,采用HTTP短連接的形式與移動(dòng)終端側(cè)的APP進(jìn)行交互,獲取所述APP發(fā)出的請(qǐng)求;
[0016]消息控制器,為所述APP發(fā)出的請(qǐng)求分配消息ID ;
[0017]長(zhǎng)連接模塊,將已獲得消息ID的請(qǐng)求通過長(zhǎng)連接通道轉(zhuǎn)發(fā)給設(shè)備處理,并接收設(shè)備返回的相應(yīng)數(shù)據(jù);
[0018]所述APP連接模塊將設(shè)備返回的相應(yīng)數(shù)據(jù)發(fā)送給所述APP。
[0019]優(yōu)選地,所述長(zhǎng)連接模塊包括:同步消息線程池和同步消息狀態(tài)機(jī);其中,所述同步消息線程池分配專用線程以處理具有所述消息ID的請(qǐng)求,通過所述專用線程將具有所述消息ID的請(qǐng)求發(fā)送給設(shè)備,接收設(shè)備返回的相應(yīng)數(shù)據(jù),并將所述返回的相應(yīng)數(shù)據(jù)發(fā)送給所述APP連接模塊;所述同步消息狀態(tài)機(jī)記錄具有所述消息ID的請(qǐng)求的處理狀態(tài),并儲(chǔ)存所述返回的相應(yīng)數(shù)據(jù)。
[0020]優(yōu)選地,所述消息控制器,根據(jù)所述同步消息狀態(tài)機(jī)記錄的前一請(qǐng)求的處理狀態(tài),判斷當(dāng)前請(qǐng)求是否可以被發(fā)送,當(dāng)前請(qǐng)求可以被發(fā)送時(shí)返回消息ID,否則返回阻塞。
[0021]優(yōu)選地,所述請(qǐng)求的處理狀態(tài)包括:請(qǐng)求的發(fā)送狀態(tài)和設(shè)備返回的相應(yīng)數(shù)據(jù)的接收狀態(tài)。
[0022]優(yōu)選地,所述長(zhǎng)連接模塊還包括連接信息存儲(chǔ)模塊,存儲(chǔ)具有所述消息ID的請(qǐng)求對(duì)應(yīng)的長(zhǎng)連接通道信息。
[0023]如上所述,本發(fā)明的測(cè)試服務(wù)器性能的方法及系統(tǒng),具有以下有益效果:
[0024]本發(fā)明的長(zhǎng)連接消息的通信方法及系統(tǒng),通過為每個(gè)請(qǐng)求分配消息ID,并通過長(zhǎng)連接通道處理具有消息ID的請(qǐng)求,從而可對(duì)APP側(cè)的并發(fā)請(qǐng)求進(jìn)行調(diào)度,使得這些請(qǐng)求能合理的返回,消息處理過程安全可靠,解決了現(xiàn)有技術(shù)中通過長(zhǎng)連接通道難以處理并發(fā)請(qǐng)求的問題。
【附圖說明】
[0025]圖1顯示為本發(fā)明實(shí)施例的長(zhǎng)連接消息的通信方法的流程示意圖。
[0026]圖2顯示為本發(fā)明實(shí)施例的長(zhǎng)連接消息的通信系統(tǒng)的示意圖。
[0027]圖3顯示為本發(fā)明實(shí)施例的長(zhǎng)連接消息的通信系統(tǒng)的運(yùn)行示意圖。
[0028]元件標(biāo)號(hào)說明
[0029]1APP連接模塊
[0030]2消息控制器
[0031]3長(zhǎng)連接模塊
[0032]301 同步消息線程池
[0033]302 同步消息狀態(tài)機(jī)
[0034]303 連接信息存儲(chǔ)模塊
[0035]S1 ?S4 步驟
【具體實(shí)施方式】
[0036]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。需說明的是,在不沖突的情況下,以下實(shí)施例及實(shí)施例中的特征可以相互組合。
[0037]需要說明的是,以下實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0038]請(qǐng)參閱圖1,本實(shí)施例提供一種長(zhǎng)連接消息的通信方法,包括:
[0039]步驟S1采用HTTP短連接的形式與移動(dòng)終端側(cè)的APP進(jìn)行交互,獲取所述APP發(fā)出的請(qǐng)求;
[0040]步驟S2為所述APP發(fā)出的請(qǐng)求分配消息ID ;
[0041]步驟S3將已獲得消息ID的請(qǐng)求通過長(zhǎng)連接通道轉(zhuǎn)發(fā)給設(shè)備處理,并接收設(shè)備返回的相應(yīng)數(shù)據(jù);
[0042]步驟S4將設(shè)備返回的相應(yīng)數(shù)據(jù)發(fā)送給所述APP。
[0043]本方法通過為每個(gè)請(qǐng)求分配消息ID,可對(duì)APP側(cè)的并發(fā)請(qǐng)求進(jìn)行調(diào)度,使得這些請(qǐng)求能合理的返回。例如,每次有APP請(qǐng)求的時(shí)候,都需要到取得一個(gè)消息ID,取消息ID的過程通常是一個(gè)阻塞動(dòng)作,也就是當(dāng)該請(qǐng)求可以被發(fā)送的時(shí)候,才會(huì)返回消息ID。這樣的設(shè)計(jì)可以保證消息的有序發(fā)送和接收。
[0044]優(yōu)選地,該方法還可包括:記錄具有消息ID的請(qǐng)求的處理狀態(tài),為所述APP發(fā)出的請(qǐng)求分配消息ID時(shí),根據(jù)前一請(qǐng)求的處理狀態(tài),判斷當(dāng)前請(qǐng)求是否可以被發(fā)送,當(dāng)前請(qǐng)求可以被發(fā)送時(shí)為當(dāng)前請(qǐng)求分配消息ID,否則返回阻塞。其中,所述請(qǐng)求的處理狀態(tài)可以包括:請(qǐng)求的發(fā)送狀態(tài)和設(shè)備返回相應(yīng)數(shù)據(jù)的接收狀態(tài)。
[0045]例如,新接收到的一個(gè)請(qǐng)求,即當(dāng)前請(qǐng)求,需要分配消息ID時(shí),可先查看前一請(qǐng)求的處理狀態(tài),如果前一請(qǐng)求的處理狀態(tài)為已發(fā)送至設(shè)備,尚未接收到設(shè)備返回的數(shù)據(jù),此時(shí)前一請(qǐng)求的消息處理尚未完成,可判斷當(dāng)前請(qǐng)求還不能被發(fā)送,那么返回阻塞;當(dāng)前一請(qǐng)求的處理狀態(tài)為已收到設(shè)備返回相應(yīng)數(shù)據(jù)時(shí),可認(rèn)為前一請(qǐng)求的消息處理已完成,當(dāng)前請(qǐng)求可以被發(fā)送,此時(shí)則可為當(dāng)前請(qǐng)求分配消息ID,通過長(zhǎng)連接通道轉(zhuǎn)發(fā)該請(qǐng)求。通過記錄和查看前一請(qǐng)求的處理狀態(tài),可以更加合理的控制并發(fā)請(qǐng)求的流程。
[0046]此外,本方法,優(yōu)選地,可分配專用線程來處理具有消息ID的請(qǐng)求。這樣請(qǐng)求通過長(zhǎng)連接通道轉(zhuǎn)發(fā),并可按同步消息的方式返回。
[0047]優(yōu)選地,本方法還包括:存儲(chǔ)具有所述消息ID的請(qǐng)求對(duì)應(yīng)的長(zhǎng)連接通道信息。SP,存儲(chǔ)設(shè)備側(cè)的長(zhǎng)連接通道信息,即設(shè)備的MAC地址與長(zhǎng)連接通道的映射關(guān)系,也就是說,如果從某長(zhǎng)連接通道接收到一條消息,可以根據(jù)這個(gè)映射關(guān)系知道是哪臺(tái)MAC地址的設(shè)備發(fā)出的。
[0048]本發(fā)明所述的長(zhǎng)連接消息的通信方法的保護(hù)范圍不限于本實(shí)施例列舉的步驟執(zhí)行順序,凡是利用本發(fā)明的原理