本發(fā)明涉及電子通信領域,尤其涉及一種長連接的建立方法、通信方法及建立通信系統(tǒng)。
背景技術:
隨著互聯(lián)網技術的發(fā)展和移動終端的普及,智能家居設備越來越普及,這些智能家居設備大多都要接入互聯(lián)網,從而讓移動終端遠程控制智能家居設備。
目前,每臺智能家居設備連入互聯(lián)網后,每臺智能家居設備都會和服務器建立長連接,因為這種方式簡單,實現(xiàn)容易。但是,隨著家庭的智能家居設備的增加,如果每臺智能家居設備都與服務器建立長連接,會嚴重占用帶寬,對服務器的性能消耗極大。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種長連接的建立方法、通信方法及建立通信系統(tǒng),降低帶寬的占用率,且減輕服務器的性能消耗。
本發(fā)明提供的技術方案如下:
一種長連接的建立方法,包括:步驟s100服務器接收當前路由器發(fā)送的長連接請求報文;步驟s200根據所述長連接請求報文,服務器得到所述當前路由器的源ip地址和端口ip地址;步驟s300根據所述源ip地址,服務器獲取所述當前路由器所處的位置區(qū)域信息;步驟s400當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,服務器與所述當前路由器建立長連接,并將所述當前路由器設置為主路由器。
在上述技術方案中,在一個區(qū)域建立一個集群,一個集群中設置一個主路由器,服務器只與主路由器建立長連接,由主路由器將數(shù)據發(fā)送給對應的智能設備。這種方式大大降低了與服務器建立長連接的設備,在保證數(shù)據正確傳輸?shù)耐瑫r,也降低了帶寬的占用率,且減小了服務器的性能消耗。
進一步,所述步驟s300之后還包括:步驟s500當所述位置區(qū)域信息對應的位置區(qū)域中存在主路由器時,服務器將存在的所述主路由器的端口ip地址發(fā)送給所述當前路由器;步驟s510所述當前路由器根據所述主路由器的端口ip地址,與所述主路由器建立長連接。
在上述技術方案中,若當前路由器所處的區(qū)域中已經存在了一個主路由器,那么當前路由器不再與服務器建立長連接,而是與主路由器建立長連接,從而降低服務器的性能消耗。
進一步,所述步驟s510進一步包括:步驟s511當所述當前路由器和主路由器建立長連接后,所述主路由器為所述當前路由器分配身份標識。
在上述技術方案中,主路由器會為當前路由器分配身份標識,便于后續(xù)數(shù)據的正確傳輸。
進一步,所述步驟s510之后還包括:步驟s520當所述位置區(qū)域信息對應的位置區(qū)域中還存在備用主路由器時,服務器將存在的所述備用主路由器的端口ip地址發(fā)送給所述當前路由器;步驟s530所述當前路由器根據所述備用主路由器的端口ip地址,與所述備用主路由器建立備用長連接。
在上述技術方案中,備用主路由器的存在給整個集群數(shù)據傳輸?shù)姆€(wěn)定性提供了保證。
進一步,所述步驟s530之后還包括:步驟s600當所述源ip地址和所述端口ip地址一致時,服務器與所述當前路由器建立備用長連接,且將所述當前路由器設置為備用主路由器;步驟s610當所述源ip地址和所述端口ip地址不一致時,服務器將所述當前路由器設置為從路由器。
本發(fā)明還提供一種長連接的通信方法,包括:步驟s10當接收到智能終端發(fā)送的控制指令信息時,服務器解析所述控制指令信息,得到控制指令和設備標識;步驟s20服務器將所述控制指令信息發(fā)送給所述設備標識對應的主路由器;步驟s30當主路由器接收到所述控制指令信息時,主路由器將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
在上述技術方案中,數(shù)據的傳輸需要通過主路由器來一級級轉發(fā),降低了服務器長時間與各個智能設備保持長連接的性能消耗,提高了服務器的工作性能。
進一步,所述步驟s30具體包括:步驟s31主路由器將所述控制指令信息發(fā)送給所述設備標識對應的備用主路由器或從路由器;步驟s32備用主路由器或從路由器將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
本發(fā)明還提供一種長連接的建立通信系統(tǒng),包括:服務器,至少一個路由器;所述服務器包括:服務器接收模塊,用于接收當前路由器發(fā)送的長連接請求報文;其中,將當前發(fā)送所述長連接請求報文的路由器作為當前路由器;服務器解析模塊,與所述服務器接收模塊電連接,用于根據所述長連接請求報文,得到所述當前路由器的源ip地址和端口ip地址;服務器獲取模塊,與所述服務器解析模塊電連接,用于根據所述源ip地址,獲取所述當前路由器所處的位置區(qū)域信息;服務器連接模塊,與所述服務器獲取模塊和所述服務器解析模塊電連接,當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,所述服務器連接模塊用于與所述當前路由器建立長連接;服務器設置模塊,與所述服務器獲取模塊和所述服務器解析模塊電連接,當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,所述服務器設置模塊用于將所述當前路由器設置為主路由器。
在上述技術方案中,在一個區(qū)域建立一個集群,一個集群中設置一個主路由器,服務器只與主路由器建立長連接,由主路由器將數(shù)據發(fā)送給對應的智能設備。這種方式大大降低了與服務器建立長連接的設備,在保證數(shù)據正確傳輸?shù)耐瑫r,也降低了帶寬的占用率,且減小了服務器的性能消耗。
進一步,所述服務器還包括:服務器發(fā)送模塊,與所述服務器獲取模塊電連接,當所述位置區(qū)域信息對應的位置區(qū)域中存在主路由器時,所述服務器發(fā)送模塊將存在的所述主路由器的端口ip地址發(fā)送給所述當前路由器;每個所述路由器包括:路由接收模塊,路由連接模塊;所述當前路由器的路由接收模塊,用于接收所述服務器發(fā)送的主路由器的端口ip地址;所述當前路由器的路由連接模塊,用于根據所述主路由器的端口ip地址,與所述主路由器建立長連接。
進一步,每個所述路由器還包括:路由分配模塊;所述主路由器的路由分配模塊,當所述當前路由器和主路由器建立長連接后,所述主路由器的路由分配模塊用于為所述當前路由器分配身份標識。
與現(xiàn)有技術相比,本發(fā)明的長連接的建立方法、通信方法及建立通信系統(tǒng)有益效果在于:
通過設置一個主路由器、若干個備用主路由器、若干個從路由器建立集群,服務器只與一個主路由器建立長連接,從而降低服務器的帶寬和性能消耗。另外,備用主路由器會服務器和各從路由器建立備用長連接,在主路由器宕機時,成為新的主路由器,保證此集群數(shù)據傳輸?shù)姆€(wěn)定性。
附圖說明
下面將以明確易懂的方式,結合附圖說明優(yōu)選實施方式,對一種長連接的建立方法、通信方法及建立通信系統(tǒng)的上述特性、技術特征、優(yōu)點及其實現(xiàn)方式予以進一步說明。
圖1是本發(fā)明長連接的建立方法一個實施例的流程圖;
圖2是本發(fā)明長連接的建立方法另一個實施例的流程圖;
圖3是本發(fā)明長連接的通信方法一個實施例的流程圖;
圖4是本發(fā)明長連接的通信方法另一個實施例的流程圖;
圖5是本發(fā)明長連接的建立通信系統(tǒng)一個實施例的結構示意圖;
圖6是本發(fā)明長連接的建立通信系統(tǒng)另一個實施例的結構示意圖;
圖7是本發(fā)明長連接的建立通信系統(tǒng)另一個實施例的結構示意圖;
圖8是本發(fā)明主路由器與服務器建立長連接的一個實施例的流程圖;
圖9是本發(fā)明從路由器與主路由器建立長連接的一個實施例的流程圖。
附圖標號說明:
10.服務器,11.服務器接收模塊,12.服務器解析模塊,13.服務器獲取模塊,14.服務器連接模塊,15.服務器設置模塊,16.服務器發(fā)送模塊,20.路由器,21.路由接收模塊,22.路由連接模塊,23.路由分配模塊,24.路由發(fā)送模塊,201.主路由器,202.備用主路由器,203.從路由器,301.智能設備。
具體實施方式
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對照附圖說明本發(fā)明的具體實施方式。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖,并獲得其他的實施方式。
為使圖面簡潔,各圖中只示意性地表示出了與本發(fā)明相關的部分,它們并不代表其作為產品的實際結構。另外,以使圖面簡潔便于理解,在有些圖中具有相同結構或功能的部件,僅示意性地繪示了其中的一個,或僅標出了其中的一個。在本文中,“一個”不僅表示“僅此一個”,也可以表示“多于一個”的情形。
在本發(fā)明的一個實施例中,如圖1所示,一種長連接的建立方法,包括:步驟s100服務器接收當前路由器發(fā)送的長連接請求報文;步驟s200根據所述長連接請求報文,服務器得到所述當前路由器的源ip地址和端口ip地址;步驟s300根據所述源ip地址,服務器獲取所述當前路由器所處的位置區(qū)域信息;步驟s400當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,服務器與所述當前路由器建立長連接,并將所述當前路由器設置為主路由器。
具體的,智能設備為智能家居設備,例如:智能電視機、智能空調等,智能設備一般都會通過家庭路由器,與其后臺的服務器通信連接。本實施例中,利用家庭路由器作為數(shù)據傳輸?shù)娜肟冢慈舸思彝ヂ酚善鞯膚an口ip地址為公網ip,可以將此家庭路由器設置為主路由器(或備用主路由器),若將其設置為主路由器的話,服務器那邊可以只與此主路由器建立長連接,而接入此主路由器的智能設備可以將報文發(fā)送給主路由器,再由主路由器通過與服務器的長連接端口轉發(fā)給服務器。
當前路由器發(fā)送給服務器的長連接請求報文中,包括了當前路由器的wan口ip地址(即端口ip地址);而服務器在接收到長連接請求報文時,可以通過報文的傳輸路徑提取出當前路由器的源ip地址。當端口ip地址和源ip地址一致時,則說明當前路由器的wan口ip地址為公網ip地址,具有被設為主路由器的資格。
可以預先設置不同的位置區(qū)域信息,例如:a區(qū)域、b區(qū)域、c區(qū)域。當獲取了當前路由器的源ip地址時,可以根據此源ip地址判斷當前路由器所述的位置,從而得到對應的位置區(qū)域信息,例如,判斷當前路由器在a區(qū)域。然后獲取a區(qū)域中的集群信息,即判斷a區(qū)域是否已經存在主路由器,如果不存在的話,就說明a區(qū)域沒有集群,可以將(具有公網ip地址的)當前路由器設置為主路由器,為后續(xù)建立集群打下基礎。這里的集群是指同一個區(qū)域的路由器可以組建一個集群,一個集群中只有一臺主路由器,例如:a區(qū)域可以通過一個主路由器建立集群。
服務器只與主路由器建立長連接,即以這個主路由器為主的集群中與智能設備有關的數(shù)據都是通過此主路由器與服務器的長連接通信接口實現(xiàn)的傳輸。這樣的話,服務器那邊可以只與此主路由器建立長連接,由主路由器將數(shù)據傳輸給正確的智能設備。
若當前路由器被設置為主路由器后,它會打開自己的長連接端口(例如:tcp8100),便于后續(xù)從路由器、備用主路由器與它的長連接。
本實施例中,在一個區(qū)域建立一個集群,一個集群中設置一個主路由器,服務器只與主路由器建立長連接,由主路由器將數(shù)據發(fā)送給對應的智能設備。這種方式大大降低了與服務器建立長連接的設備,在保證數(shù)據正確傳輸?shù)耐瑫r,也降低了帶寬的占用率,且減小了服務器的性能消耗。
優(yōu)選地,所述步驟s300之后還包括:步驟s500當所述位置區(qū)域信息對應的位置區(qū)域中存在主路由器時,服務器將存在的所述主路由器的端口ip地址發(fā)送給所述當前路由器;步驟s510所述當前路由器根據所述主路由器的端口ip地址,與所述主路由器建立長連接。
具體的,若當前路由器所處的位置區(qū)域中已經存在了主路由器,說明集群已經建立,那么當前路由器就需要與主路由器建立長連接,實現(xiàn)數(shù)據的傳輸。
例如:當前路由器也在a區(qū)域,a區(qū)域已經存在一個主路由器了,那么服務器會把這個主路由器的端口ip地址發(fā)送給當前路由器,當前路由器會向主路由器發(fā)送長連接請求報文,當主路由器同意后,當前路由器就會接入到主路由器的長連接端口(例如:tcp8100)。
本實施例中,若當前路由器所處的區(qū)域中已經存在了一個主路由器,那么當前路由器不再與服務器建立長連接,而是與主路由器建立長連接,從而降低服務器的性能消耗。
優(yōu)選的,所述步驟s510進一步包括:步驟s511當所述當前路由器和主路由器建立長連接后,所述主路由器為所述當前路由器分配身份標識。
具體的,當前路由器與主路由器建立長連接后,主路由器會為當前路由器分配身份標識,便于后續(xù)數(shù)據的正確傳輸。
需要注意的是,長連接請求報文中還包括:智能設備標識(即智能家居設備的id)。當服務器接到連接請求報文時,先判斷當前路由器所處的位置區(qū)域中是否有主路由器,如果有的話,會把智能設備標識與存在的主路由器對應保存,同時會把主路由器的端口ip地址反饋給當前路由器,讓當前路由器與主路由器建立長連接。同理,當前路由器向主路由器發(fā)送長連接請求報文時,主路由器會為當前路由器分配身份標識,并將此身份標識與智能設備標識對應保存,便于后續(xù)的數(shù)據傳輸。
主路由器為當前路由器分配身份標識,保證了同一集群中數(shù)據傳輸?shù)臏蚀_性。
優(yōu)選地,所述步驟s510之后還包括:步驟s520當所述位置區(qū)域信息對應的位置區(qū)域中還存在備用主路由器時,服務器將存在的所述備用主路由器的端口ip地址發(fā)送給所述當前路由器;步驟s530所述當前路由器根據所述備用主路由器的端口ip地址,與所述備用主路由器建立備用長連接。
具體的,備用主路由器就是主路由器的備用設備,當主路由器宕機或網絡不通后,按照優(yōu)先級規(guī)則選擇一臺備用主路由器作為新的主路由器,承擔起與服務器數(shù)據傳輸?shù)墓δ堋?/p>
當前路由器向備用主路由器發(fā)送長連接請求報文,備用主路由器同意后使當前路由器與備用主路由器建立備用長連接。備用長連接是指有這個長連接通道,但是平時主路由器正常工作時,備用長連接是不會進行數(shù)據傳輸?shù)摹?/p>
備用主路由器的數(shù)量為一臺、兩臺或多臺。優(yōu)先級規(guī)則可以為按照時間先后順序,即先被設置為備用主路由器的備用主路由器在主路由器宕機后,先被設置為主路由器。例如:設置時間:備用主路由器a早于備用主路由器b,當主路由器宕機后,備用主路由器a成為新的主路由器。
在本實施例中,當備用主路由器成為新的主路由器后,它會作為主路由器為其它備用主路由器、從路由器分配身份標識,便于數(shù)據的傳輸;另外,也會讓其它備用主路由器、從路由器反饋智能設備標識,讓新的主路由器對應保存。同時,服務器端也會更新智能設備標識對應的主路由器,保證后續(xù)數(shù)據的精確發(fā)送。
備用主路由器會定時給主路由器發(fā)送心跳報文,主路由器接收到心中報文后,會發(fā)送心中響應報文,通過心跳報文來實現(xiàn)備用主路由器監(jiān)聽主路由器的工作狀態(tài)是否正常,若出現(xiàn)問題,讓優(yōu)先級最高的備用主路由器立馬成為新的主路由器,保證正常的數(shù)據傳輸。
備用主路由器的存在給整個集群數(shù)據傳輸?shù)姆€(wěn)定性提供了保證。
優(yōu)選地,所述步驟s530之后還包括:步驟s600當所述源ip地址和所述端口ip地址一致時,服務器與所述當前路由器建立備用長連接,且將所述當前路由器設置為備用主路由器;步驟s610當所述源ip地址和所述端口ip地址不一致時,服務器將所述當前路由器設置為從路由器。
具體的,源ip地址和端口ip地址一致,說明當前路由器的wan口ip地址為公網ip,具有成為主路由器的資格,但在已經存在了主路由器時,可以作為備用主路由器存在。因此,服務器將當前路由器設置為備用主路由器,并建立備用長連接。
而源ip地址和端口ip地址不一致,說明當前路由器的wan口ip地址為私網ip地址,不適合作為主路由器,因此,服務器將其設置為從路由器,讓主路由器來實現(xiàn)服務器與此從路由器之間的數(shù)據傳輸。
在本發(fā)明的另一個實施例中,如圖2所示,一種長連接的建立方法,包括:
步驟s100服務器接收當前路由器發(fā)送的長連接請求報文;
步驟s200根據所述長連接請求報文,服務器得到所述當前路由器的源ip地址和端口ip地址;
步驟s300根據所述源ip地址,服務器獲取所述當前路由器所處的位置區(qū)域信息;
步驟s400當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,服務器與所述當前路由器建立長連接,并將所述當前路由器設置為主路由器。
步驟s500當所述位置區(qū)域信息對應的位置區(qū)域中存在主路由器時,服務器將存在的所述主路由器的端口ip地址發(fā)送給所述當前路由器;
步驟s510所述當前路由器根據所述主路由器的端口ip地址,與所述主路由器建立長連接;步驟s510進一步包括:步驟s511當所述當前路由器和主路由器建立長連接后,所述主路由器為所述當前路由器分配身份標識;步驟s520當所述位置區(qū)域信息對應的位置區(qū)域中還存在備用主路由器時,服務器將存在的所述備用主路由器的端口ip地址發(fā)送給所述當前路由器;步驟s530所述當前路由器根據所述備用主路由器的端口ip地址,與所述備用主路由器建立備用長連接;
步驟s600當所述源ip地址和所述端口ip地址一致時,服務器與所述當前路由器建立備用長連接,且將所述當前路由器設置為備用主路由器;步驟s610當所述源ip地址和所述端口ip地址不一致時,服務器將所述當前路由器設置為從路由器。
具體的,本實施例通過設置一個主路由器、若干個備用主路由器、若干個從路由器建立集群,服務器只與一個主路由器建立長連接,從而降低服務器的帶寬和性能消耗。另外,備用主路由器會服務器和各從路由器建立備用長連接,在主路由器宕機時,成為新的主路由器,保證此集群數(shù)據傳輸?shù)姆€(wěn)定性。
在本發(fā)明的另一個實施例中,如圖3所示,一種長連接的通信方法,包括:步驟s10當接收到智能終端發(fā)送的控制指令信息時,服務器解析所述控制指令信息,得到控制指令和設備標識;步驟s20服務器將所述控制指令信息發(fā)送給所述設備標識對應的主路由器;步驟s30當主路由器接收到所述控制指令信息時,主路由器將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
具體的,智能設備(即智能家居設備)可以通過用戶的手機、平板電腦等移動終端進行遠程控制。例如:用戶想通過自己的手機遠程控制家里的智能電視機。當智能設備處于上述建立的集群時,手機會把控制指令信息發(fā)送給服務器,服務器根據控制指令信息得到智能電視機的設備標識,查找對應的主路由器,把此控制指令信息轉發(fā)給主路由器,再由主路由器轉發(fā)此控制指令信息給智能電視機(假設此智能電視機是直接連接在主路由器上的)。
在本發(fā)明的另一個實施例中,如圖4所示,一種長連接的通信方法,包括:
步驟s10當接收到智能終端發(fā)送的控制指令信息時,服務器解析所述控制指令信息,得到控制指令和設備標識;
步驟s20服務器將所述控制指令信息發(fā)送給所述設備標識對應的主路由器;
步驟s30當主路由器接收到所述控制指令信息時,主路由器將所述控制指令信息發(fā)送給所述設備標識對應的智能設備;
所述步驟s30具體包括:步驟s31主路由器將所述控制指令信息發(fā)送給所述設備標識對應的備用主路由器或從路由器;步驟s32備用主路由器或從路由器將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
具體的,假設智能電視機是連接在從路由器或備用主路由器上,那么主路由器接收服務器轉發(fā)的控制指令信息時,會根據控制指令信息中的設備標識查找對應的備用主路由器或從路由器,再將此控制指令信息轉發(fā)給對應的備用主路由器或從路由器,再由備用主路由器或從路由器轉頭給智能電視機。
當智能設備連入上述的集群時,因只有一個主路由器與服務器建立長連接,因此,數(shù)據的傳輸需要通過主路由器來一級級轉發(fā),降低了服務器長時間與各個智能設備保持長連接的性能消耗,提高了服務器的工作性能。
在本發(fā)明的另一個實施例中,當某個智能設備發(fā)送報文給服務器時,主要經過以下幾個步驟(這里主要是從智能設備連接到從路由器或備用主路由器的角度說明):
1.智能設備發(fā)送報文給從/備用主路由器,報文中包含智能設備的智能設備標識,即deviceid。
2.從/備用主路由器接受到該報文后,在報文上包裹一層,加上主路由器為它分配的身份標識,表明該智能設備在該從/備用主路由器下。
3.從/備用主路由器將報文發(fā)送給主路由器,主路由器將報文再次封裝,加上主路由器的身份標識,表明該從/備用主路由器在該主路由器下,然后發(fā)送給云服務。
在本發(fā)明的另一個實施例中,服務器接收到主路由器發(fā)送的報文后,將響應報文發(fā)送給智能設備,主要經過以下幾個步驟:
1.服務器根據主路由器的身份標識,將報文發(fā)送給主路由器。
2.主路由器解析報文,得到智能設備標識,根據智能設備標識得到對應的從/備用主路由器,然后將報文轉發(fā)給從/備用主路由器
3.從/備用主路由器解析報文,得到智能設備的智能設備標識(deviceid號),然后將報文轉發(fā)給智能設備。
在本發(fā)明的另一個實施例中,如圖5所示,一種長連接的建立通信系統(tǒng),其特征在于,包括:服務器,至少一個路由器。所述服務器10包括:
服務器接收模塊11,用于接收當前路由器發(fā)送的長連接請求報文;其中,將當前發(fā)送所述長連接請求報文的路由器作為當前路由器;
服務器解析模塊12,與所述服務器接收模塊電連接,用于根據所述長連接請求報文,得到所述當前路由器的源ip地址和端口ip地址;
服務器獲取模塊13,與所述服務器解析模塊電連接,用于根據所述源ip地址,獲取所述當前路由器所處的位置區(qū)域信息;
服務器連接模塊14,與所述服務器獲取模塊13和所述服務器解析模塊12電連接,當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,所述服務器連接模塊用于與所述當前路由器建立長連接;
服務器設置模塊15,與所述服務器獲取模塊和所述服務器解析模塊電連接,當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中無主路由器時,所述服務器設置模塊用于將所述當前路由器設置為主路由器。
具體的,智能設備為智能家居設備,例如:智能電視機、智能空調等,智能設備一般都會通過家庭路由器,與其后臺的服務器通信連接。本實施例中,利用家庭路由器作為數(shù)據傳輸?shù)娜肟冢慈舸思彝ヂ酚善鞯膚an口ip地址為公網ip,可以將此家庭路由器設置為主路由器(或備用主路由器),若將其設置為主路由器的話,服務器那邊可以只與此主路由器建立長連接,而接入此主路由器的智能設備可以將報文發(fā)送給主路由器,再由主路由器通過與服務器的長連接端口轉發(fā)給服務器。
當前路由器發(fā)送給服務器的長連接請求報文中,包括了當前路由器的wan口ip地址(即端口ip地址);而服務器在接收到長連接請求報文時,可以通過報文的傳輸路徑提取出當前路由器的源ip地址。當端口ip地址和源ip地址一致時,則說明當前路由器的wan口ip地址為公網ip地址,具有被設為備主路由器的資格。
可以預先設置不同的位置區(qū)域信息,例如:a區(qū)域、b區(qū)域、c區(qū)域。當獲取了當前路由器的源ip地址時,可以根據此源ip地址判斷當前路由器所述的位置,從而得到對應的位置區(qū)域信息,例如,判斷當前路由器在a區(qū)域。然后獲取a區(qū)域中的集群信息,即判斷a區(qū)域是否已經存在主路由器,如果不存在的話,就說明a區(qū)域沒有集群,可以將(具有公網ip地址的)當前路由器設置為主路由器,為后續(xù)建立集群打下基礎。這里的集群是指同一個區(qū)域的路由器可以組建一個集群,一個集群中只有一臺主路由器,例如:a區(qū)域可以通過一個主路由器建立集群。
服務器只與主路由器建立長連接,即以這個主路由器為主的集群中與智能設備有關的數(shù)據都是通過此主路由器與服務器的長連接通信接口實現(xiàn)的傳輸。這樣的話,服務器那邊可以只與此主路由器建立長連接,由主路由器將數(shù)據傳輸給正確的智能設備。
若當前路由器被設置為主路由器后,它會打開自己的長連接端口(例如:tcp8100),便于后續(xù)從路由器、備用主路由器與它的長連接。
本實施例中,在一個區(qū)域建立一個集群,一個集群中設置一個主路由器,服務器只與主路由器建立長連接,由主路由器將數(shù)據發(fā)送給對應的智能設備。這種方式大大降低了與服務器建立長連接的設備,在保證數(shù)據正確傳輸?shù)耐瑫r,也降低了服務器的帶寬占用率,且減小了服務器的性能消耗。
優(yōu)選地,如圖6所示,所述服務器還包括:服務器發(fā)送模塊16,與所述服務器獲取模塊13電連接,當所述位置區(qū)域信息對應的位置區(qū)域中存在主路由器時,所述服務器發(fā)送模塊將存在的所述主路由器的端口ip地址發(fā)送給所述當前路由器;每個所述路由器20包括:路由接收模塊21,路由連接模塊22。
所述當前路由器的路由接收模塊,用于接收所述服務器發(fā)送的主路由器的端口ip地址;所述當前路由器的路由連接模塊,用于根據所述主路由器的端口ip地址,與所述主路由器建立長連接。
具體的,若當前路由器所處的位置區(qū)域中已經存在了主路由器,說明集群已經建立,那么當前路由器就需要與主路由器建立長連接,實現(xiàn)數(shù)據的傳輸。
例如:當前路由器也在a區(qū)域,a區(qū)域已經存在一個主路由器了,那么服務器會把這個主路由器的端口ip地址發(fā)送給當前路由器,當前路由器會向主路由器發(fā)送長連接請求報文,當主路由器同意后,當前路由器就會接入到主路由器的長連接端口(例如:tcp8100)。
本實施例中,若當前路由器所處的區(qū)域中已經存在了一個主路由器,那么當前路由器不再與服務器建立長連接,而是與主路由器建立長連接,從而降低服務器的性能消耗。
優(yōu)選地,每個所述路由器還包括:路由分配模塊23。
所述主路由器的路由分配模塊,當所述當前路由器和主路由器建立長連接后,所述主路由器的路由分配模塊用于為所述當前路由器分配身份標識。
具體的,當前路由器與主路由器建立長連接后,主路由器會為當前路由器分配身份標識,便于后續(xù)數(shù)據的正確傳輸。
需要注意的是,長連接請求報文中還包括:智能設備標識(即智能家居設備的id)。當服務器接到連接請求報文時,先判斷當前路由器所處的位置區(qū)域中是否有主路由器,如果有的話,會把智能設備標識與存在的主路由器對應保存,同時會把主路由器的端口ip地址反饋給當前路由器,讓當前路由器與主路由器建立長連接。同理,當前路由器向主路由器發(fā)送長連接請求報文時,主路由器會為當前路由器分配身份標識,并將此身份標識與智能設備標識對應保存,便于后續(xù)的數(shù)據傳輸。
主路由器為當前路由器分配身份標識,保證了同一集群中數(shù)據傳輸?shù)臏蚀_性。
優(yōu)選地,服務器發(fā)送模塊16,進一步用于當所述位置區(qū)域信息對應的位置區(qū)域中還存在備用主路由器時,將存在的所述備用主路由器的端口ip地址發(fā)送給所述當前路由器;所述當前路由器的路由連接模塊,進一步用于根據所述備用主路由器的端口ip地址,與所述備用主路由器建立備用長連接。
優(yōu)選地,服務器設置模塊15,進一步用于當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中有主路由器時,將所述當前路由器設置為備用主路由器;以及,當所述源ip地址和所述端口ip地址不一致時,將所述當前路由器設置為從路由器。
服務器連接模塊14,進一步用于當所述源ip地址和所述端口ip地址一致、且所述位置區(qū)域信息對應的位置區(qū)域中有主路由器時,與所述當前路由器建立備用長連接。
優(yōu)選地,每個路由器還包括:路由發(fā)送模塊24。
服務器接收模塊11,進一步用于接收智能終端發(fā)送的控制指令信息;服務器解析模塊12,進一步用于解析所述控制指令信息,得到控制指令和設備標識;服務器發(fā)送模塊16,進一步用于將所述控制指令信息發(fā)送給所述設備標識對應的主路由器。
所述主路由器的路由接收模塊,進一步用于接收服務器發(fā)送的所述控制指令信息;所述主路由器的路由發(fā)送模塊,用于將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
優(yōu)選地,所述主路由器的路由發(fā)送模塊,進一步用于將所述控制指令信息發(fā)送給所述設備標識對應的備用主路由器或從路由器;所述備用主路由器或所述從路由器的路由發(fā)送模塊,用于將所述控制指令信息發(fā)送給所述設備標識對應的智能設備。
具體的,此系統(tǒng)實施例的具體實施過程與上述方法實施例中的具體實施過程相同,在此不再詳細描述。
如圖7所示,一種長連接的建立通信系統(tǒng),包括:一個服務器10,一個主路由器201,兩個備用主路由器202,一個從路由器203,四個智能設備301。
服務器與主路由器201建立長連接;兩個備用主路由器202與服務器建立備用長連接、與主路由器201建立長連接,兩個備用主路由器之間建立備用長連接;從路由器203與主路由器201建立長連接、與兩個備用主路由器建立備用長連接;兩個智能設備301連接于從路由器203下;一個智能設備301連接于主路由器201下,一個智能設備連接于其中一個備用主路由器202下。
如圖8所示,主路由器與服務器建立長連接的過程為:
1、當前路由器(即圖中的主路由器201)發(fā)送長連接請求報文(包括了自己的wan口ip地址);
1.1、服務器判斷是否為公網ip;
1.2、若為公網ip,則判斷是否有合適的集群加入(即其所在的位置區(qū)域中是否存在主路由器);
1.3、沒有主路由器,將當前路由器設置為主路由器。
2、主路由器與服務器建立長連接;
2.1、服務器確認長連接。
3、主路由器打開自己的長連接端口;
4、主路由器初始化完成;
4.1、服務器確認主路由器初始化完成。
如圖9所示,從路由器與主路由器建立長連接的過程為:
5、當前路由器(即圖中的從路由器203)發(fā)送長連接請求報文(包括了自己的wan口ip地址);
5.1服務器判斷為私網ip,因此當前路由器可以作為從路由器進行后續(xù)的處理;
5.2服務器尋找合適的集群(即通過當前路由器的位置區(qū)域信息,查找對應的主路由器);
6、服務器將主路由器的端口ip地址發(fā)送給當前路由器(即從路由器);
7、當前路由器(即從路由器)接入到主路由器的長連接端口;
7.1主路由器為當前路由器(即從路由器)分配身份標識。
應當說明的是,上述實施例均可根據需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。