本發(fā)明涉及互聯(lián)網(wǎng)、車聯(lián)網(wǎng)、服務平臺及移動終端開發(fā),特別涉及移動互聯(lián)網(wǎng)環(huán)境下,向車機端進行及時、可靠的命令下發(fā)方法。
背景技術(shù):
現(xiàn)有技術(shù)中互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)的網(wǎng)絡環(huán)境如下:
互聯(lián)網(wǎng)的網(wǎng)絡基礎建設,經(jīng)過十幾年長期的發(fā)展,已經(jīng)較為穩(wěn)定和成熟,PC終端、操作系統(tǒng)的能力也達到了較高的水平。
而移動互聯(lián)網(wǎng),由于涉及到無線電話網(wǎng)絡基站、2G、3G和4G技術(shù)的不斷發(fā)展,其穩(wěn)定性、帶寬、資源分配等各方面雖日趨完善,但當前終究還有不少問題的存在。另外,由于移動互聯(lián)網(wǎng)其“移動”的本質(zhì),加上智能終端設備(智能手機、平板電腦)的發(fā)展較晚,目前還在不斷演變的情況,與互聯(lián)網(wǎng)相比,移動互聯(lián)網(wǎng)還是低速、不穩(wěn)定、終端能力稍弱的情況。而且由于其“移動”本質(zhì),短時間內(nèi)很難達到互聯(lián)網(wǎng)的質(zhì)量。
所以,在互聯(lián)網(wǎng)的環(huán)境里面,網(wǎng)絡應用程序由于網(wǎng)絡設施、操作系統(tǒng)的成熟,開發(fā)使用起來比較容易,資源也較為充足。而移動互聯(lián)網(wǎng)還是要“斤斤計較”。
智能終端電池續(xù)航能力、系統(tǒng)休眠:
智能終端設備的電池續(xù)航能力始終是技術(shù)瓶頸。在連續(xù)使用的情況下,絕大部分智能設備電池無法支持兩個小時以上。所以在沒有外部電源的情況,智能終端設備必須頻繁、長時間休眠,這將極大地影響兩種網(wǎng)絡環(huán)境下的網(wǎng)絡應用場景。
IP地址、端口資源:
由于需要動態(tài)分配IP地址(這里不僅僅指互聯(lián)網(wǎng)入口的IP,還包括局域網(wǎng)內(nèi)部的IP),路由器的工作原理都是經(jīng)過端口映射,把內(nèi)部網(wǎng)絡(包括PC、手機、平板、Wifi、2G、3G、4G)IP與端口映射成外部IP(通常是公網(wǎng)IP)和對應的端口,并維持這個映射關系,才能正常地修改、轉(zhuǎn)發(fā)報文信息,保證內(nèi)部各個ip、端口與外部的各個ip、端口的通信。
然而,單個IP地址的端口資源是有限的,理論上限是65535個端口。對于普通寬帶路由器來說,這個已經(jīng)很充足了。但是,對于大型的網(wǎng)絡服務、網(wǎng)絡主干接入點等來說,如果IP資源不足,每個IP幾萬個端口的資源很快會耗盡,從而影響正常通訊。
正因為如此,所有的路由器都會為每個端口映射關系設置老化時間,如果老化時間倒數(shù)到0,則端口映射關系失效,該端口被釋放給其他連接使用。如果端口全部耗盡,則無法再新建內(nèi)部與外部的網(wǎng)絡連接。
端口映射老化時間,比很多人想象中的要短很多。一般的家用寬帶路由器,老化時間一般是兩三分鐘;在有線寬帶運營商接入部分,老化時間可能少于兩分鐘。在無線電話網(wǎng)絡運營商接入部分(例如GPRS連接),老化時間甚至不超過一分鐘。
也就是說,任何一個網(wǎng)絡通訊(不管是TCP或UDP),如果幾分鐘之內(nèi)沒有網(wǎng)絡報文傳輸,其占用的IP地址端口將被路由器回收。這個時候不管TCP還是UDP該次通信必將終止。更殘酷的事實是,互聯(lián)網(wǎng)可認為是由無數(shù)個路由器連接而成的,一個網(wǎng)絡通信往往需要通過n個路由器,每個路由器都會為一次通信建立自己的端口映射。只要其中一個路由器回收其端口,則整個通訊中斷。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題,就是提供一種實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng)及方法以實現(xiàn)車機端通訊服務器對車機段進行及時可靠的命令下發(fā)。
本發(fā)明解決所述技術(shù)問題,采用的技術(shù)方案是,實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng),包括智能終端、智能終端服務器、車機端通訊服務器及車機,所述智能終端與智能終端服務器連接,智能終端服務器與車機端通訊服務器連接,車機端通訊服務器與車機連接;
所述智能終端用于下發(fā)遠程控制命令至智能終端服務器;
所述智能終端服務器用于將遠程控制命令轉(zhuǎn)發(fā)至車機端通訊服務器;
所述車機端通訊服務器用于與車機建立長連接,并為每個車機維護一個命令列隊;接收命令時將新的遠程控制命令加入到命令列隊,下發(fā)命令時將遠程控制命令出隊;同時,車機端通訊服務器時刻查詢命令列隊是否為空,是則維持與車機之間的長連接,否則下發(fā)命令。
具體的,所述車機,還用于通過在發(fā)送HTTP請求中,設置頭部keep-Alive:timeout=A;
所述車機端通訊服務器,還用于設置長連接超時時間B,且A<B,所述時間A及時間B由人為設定。
進一步的,所述車機還用于發(fā)送HTTP請求時檢測長連接是否超時,是則建立與車機端通訊服務器的新的長連接,否則通過已有長連接建立與車機端通訊服務器之間的通訊。
進一步的,所述車機端通訊服務器,還用于在車機端通訊服務器與車機建立長鏈接后,返回連接信息至車機;
所述車機還用于接收返回連接信息后再次發(fā)送HTTP請求,車機端通訊服務器檢測命令列隊是否為空,否則命令出隊下發(fā)至車機,是則等待時間A返回心跳包至車機,維持HTTP連接不被釋放。
用于上述的基于HTTP協(xié)議實現(xiàn)手機端對車機端的長輪詢控制系統(tǒng)的控制方法,包括以下步驟:
智能終端下發(fā)遠程控制命令至智能終端服務器,智能終端服務器將遠程控制命令轉(zhuǎn)發(fā)至車機端通訊服務器,車機端通訊服務器與車機建立長連接,并為每個車機維護一個命令列隊;接收命令時將新的遠程控制命令加入到命令列隊,下發(fā)命令時將遠程控制命令出隊;同時,車機端通訊服務器時刻查詢命令列隊是否為空,是則維持與車機之間的長連接,否則下發(fā)命令。
具體的,車機端通訊服務器與車機建立長連接包括以下步驟:
車機在發(fā)送HTTP請求中,設置頭部keep-Alive:timeout=A;
車機端通訊服務器設置連接超時時間B,且A<B,所述時間A及時間B由人為設定。
進一步的,所述車機發(fā)送HTTP請求,若長連接已超時則系統(tǒng)建立車機與車機端通訊服務器的新的長連接建立通訊,否則通過已有長連接建立通訊,車機端通訊服務器返回連接信息至車機。
進一步的,所述車機接收返回連接信息后再次發(fā)送HTTP請求,車機端通訊服務器檢測命令列隊是否為空,否則命令出隊下發(fā)至車機,是則等待時間A返回心跳包至車機,維持HTTP連接不被釋放。
本發(fā)明的有益效果是:車機端通訊服務器設置對http請求保持長連接的時間,當在時間閾值之內(nèi)時,連接不會釋放,車機有新的請求時,使用這條已建立的連接,不會創(chuàng)建新的連接;如果超過時間閾值,連接會被釋放,再發(fā)送新的請求時,會重新建立連接;同時車機每次收到車機端通訊服務器的命令返回后,都會再次發(fā)送此請求,車機端通訊服務器收到請求時,每隔時間段A對車機端超時返回,通過此輪詢機制,車機端、服務器發(fā)送心跳包維持http連接不被釋放,從而實現(xiàn)服務器對客戶端進行及時、可靠的命令下發(fā)。
附圖說明
圖1為本發(fā)明實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng)及方法實施例中系統(tǒng)機構(gòu)圖;
圖2為本發(fā)明實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng)及方法實施例中車機發(fā)送請求流程圖;
圖3為本發(fā)明實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng)及方法實施例中檢測長連接是否有效流程圖。
以下結(jié)合實施例的具體實施方式,對本發(fā)明的上述內(nèi)容再作進一步的詳細說明。但不應將此理解為本發(fā)明上述主題的范圍僅限于以下的實例。在不脫離本發(fā)明上述技術(shù)思想情況下,根據(jù)本領域普通技術(shù)知識和慣用手段做出的各種替換或變更,均應包括在本發(fā)明的范圍內(nèi)。
具體實施方式
下面結(jié)合附圖及實施例詳細描述本發(fā)明的技術(shù)方案:
本發(fā)明針對現(xiàn)有技術(shù)中端口映射的老化時間導致端口被回收從而導致連接被釋放的問題,提供一種實現(xiàn)智能終端對車機的長輪詢控制系統(tǒng),包括智能終端、智能終端服務器、車機端通訊服務器及車機,所述智能終端與智能終端服務器連接,智能終端服務器與車機端通訊服務器連接,車機端通訊服務器與車機連接;所述智能終端用于下發(fā)遠程控制命令至智能終端服務器;所述智能終端服務器用于將遠程控制命令轉(zhuǎn)發(fā)至車機端通訊服務器;所述車機端通訊服務器用于與車機建立長連接,并為每個車機維護一個命令列隊;接收命令時將新的遠程控制命令加入到命令列隊,下發(fā)命令時將遠程控制命令出隊;同時,車機端通訊服務器時刻查詢命令列隊是否為空,是則維持與車機之間的長連接,否則下發(fā)命令。用于上述基于HTTP協(xié)議實現(xiàn)手機端對車機端的長輪詢控制系統(tǒng)的控制方法,智能終端下發(fā)遠程控制命令至智能終端服務器,智能終端服務器將遠程控制命令轉(zhuǎn)發(fā)至車機端通訊服務器,車機端通訊服務器與車機建立長連接,并為每個車機維護一個命令列隊;接收命令時將新的遠程控制命令加入到命令列隊,下發(fā)命令時將遠程控制命令出隊;同時,車機端通訊服務器時刻查詢命令列隊是否為空,是則維持與車機之間的長連接,否則下發(fā)命令。車機端通訊服務器設置對http請求保持長連接的時間,當在時間閾值之內(nèi)時,連接不會釋放,車機有新的請求時,使用這條已建立的連接,不會創(chuàng)建新的連接;如果超過時間閾值,連接會被釋放,再發(fā)送新的請求時,會重新建立連接;同時車機每次收到車機端通訊服務器的命令返回后,都會再次發(fā)送此請求,車機端通訊服務器收到請求時,每隔時間段A對車機端超時返回,通過此輪詢機制,車機端、服務器發(fā)送心跳包維持http連接不被釋放,從而實現(xiàn)服務器對客戶端進行及時、可靠的命令下發(fā)。
實施例
HTTP是一個請求<->響應模式的典型范例,即客戶端向服務器發(fā)送一個請求信息,服務器來響應這個信息。在老的HTTP版本中,每個請求都將被創(chuàng)建一個新的客戶端->服務器的連接,在這個連接上發(fā)送請求,然后接收請求。這樣的模式有一個很大的優(yōu)點就是,它很簡單,很容易理解和編程實現(xiàn);它也有一個很大的缺點就是,它效率很低,因此Keep-Alive被提出用來解決效率低的問題。而Keep-Alive(保持連接)功能使客戶端到服務器端的連接持續(xù)有效,當出現(xiàn)對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接。
本例就是針對http保持連接這種機制,實現(xiàn)服務器對客戶端進行及時、可靠的命令下發(fā)。
系統(tǒng)結(jié)構(gòu)如圖1所示,包括智能終端、智能終端服務器、車機端通訊服務器及車機,所述智能終端與智能終端服務器連接,智能終端服務器與車機端通訊服務器連接,車機端通訊服務器與車機連接;所述智能終端用于下發(fā)遠程控制命令至智能終端服務器;所述智能終端服務器用于將遠程控制命令轉(zhuǎn)發(fā)至車機端通訊服務器;所述車機端通訊服務器用于與車機建立長連接,并為每個車機維護一個命令列隊;接收命令時將新的遠程控制命令加入到命令列隊,下發(fā)命令時將遠程控制命令出隊;同時,車機端通訊服務器時刻查詢命令列隊是否為空,是則維持與車機之間的長連接,否則下發(fā)命令。
車機端與通信服務器的http長連接實現(xiàn)方式如下:
1.車機端在發(fā)送的Http請求中,設置頭部Keep-Alive:timeout=A;(服務器將等待時間段A才進行返回);
2.車機端通訊服務器設置連接超時時間B,且A<B,所述時間A及時間B由人為設定。IIS、Apache等服務器設置對http請求保持連接的時間B,當在時間閾值B之內(nèi)時,連接不會釋放,車機端有新的請求時,使用這條已建立的連接,不會創(chuàng)建新的連接。如果超過時間閾值B,連接會被釋放,再發(fā)送新的請求時,會重新建立連接。
系統(tǒng)工作時,車機端在移動網(wǎng)絡環(huán)境下發(fā)送維持連接的http請求,當IP地址變化、網(wǎng)絡環(huán)境等原因斷開連接就會重新發(fā)送此請求,如圖2所示;若長連接已超時則系統(tǒng)建立車機與車機端通訊服務器的新的長連接,否則通過已有長連接建立通訊。
而車機每次收到車機端通訊服務器返回的連接信息后,都會再次發(fā)送此請求,車機端通訊服務器收到請求時,每隔時間段A對客戶端超時返回。通過此輪詢機制,車機端、服務器發(fā)送心跳包維持http連接不被釋放。而當服務端有命令下發(fā)時,通過此請求返回,而不是返回心跳包。具體如圖3所示。其中,HTTP有效返回包括有命令的返回和無命令的返回,有命令的返回時間<A;無命令的返回時間=A。但是,不論返回是否包含命令,返回都在TCP鏈接維持時間內(nèi)進行,即A<B。返回如果是有效返回,不論該返回是否包含有命令,都是說明,車機端通訊服務器方面維護有當前通信的TCP通道,需要馬上通過該通道再次發(fā)起命令下發(fā)請求;而返回值如果是超時返回,說明該通道已經(jīng)失效,再次請求的時候?qū)⑿碌腡CP通道。由于一次HTTP請求能夠攜帶的命令數(shù)只有一條,所有命令下發(fā)服務器端使用隊列緩存了所有的沒下發(fā)命令,在下一次HTTP請求到來時,根據(jù)閾值判斷是否有有效命令數(shù)據(jù)需要下發(fā)。
考慮移動網(wǎng)絡環(huán)境下的延遲,B-A的值需在合適范圍內(nèi),保證在連接釋放之前,一直都有心跳包發(fā)送。