專利名稱:一種網(wǎng)絡(luò)通信方法、通信設(shè)備以及通信設(shè)備的中間件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)通信方法、通信設(shè)備以及通信設(shè)備上的中間件。
背景技術(shù):
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)終端與普通個(gè)人電腦的界限越來越模糊,如windows ph0ne、andr0id等智能手機(jī)平臺(tái)的出現(xiàn),大大拓展了移動(dòng)終端的可用性。如圖1所示,各種供移動(dòng)終端使用的應(yīng)用程序越來越多的有與網(wǎng)絡(luò)服務(wù)器進(jìn)行數(shù)據(jù)傳輸?shù)男枨?,而各種應(yīng)用程序都各自與網(wǎng)絡(luò)端建立長連接,當(dāng)大量的程序運(yùn)行時(shí),對(duì)網(wǎng)絡(luò)側(cè)資源和移動(dòng)終端資源的消耗都非常大,尤其是通過保持長連接心跳的程序,對(duì)移動(dòng)終端的電量及網(wǎng)絡(luò)流量而言都是一筆巨大的開銷。
發(fā)明內(nèi)容
為了實(shí)現(xiàn)多應(yīng)用程序網(wǎng)絡(luò)連接的共享,本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)通信方法,應(yīng)用于一通信設(shè)備,該通信設(shè)備包含中間件,該網(wǎng)絡(luò)通信方法包括中間件接收由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序發(fā)送的長連接請(qǐng)求;如果未有長連接,中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);獲得所述網(wǎng)絡(luò)連接權(quán)的第一中間件,根據(jù)長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;所述第一中間件在所述第一長連接建立后,向所述第一應(yīng)用程序反饋一通知消息,以使得所述第一應(yīng)用程序綁定所述第一長連接,與網(wǎng)絡(luò)側(cè)通信。進(jìn)一步的,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括所述中間件接收第二應(yīng)用程序發(fā)送的長連接請(qǐng)求;所述第一中間件向所述第二應(yīng)用程序共享所述第一長連接,使得所述第二應(yīng)用程序綁定所述第一長連接,與網(wǎng)絡(luò)側(cè)通信。進(jìn)一步的,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件;所述中間件包括兩個(gè)以上中間件;在所述中間件中,所述第一中間件以隨機(jī)方式獲得所述網(wǎng)絡(luò)連接權(quán)。進(jìn)一步的,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件;所述中間件包括兩個(gè)以上中間件;所述中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明之后,所述第一中間件獲得所述網(wǎng)絡(luò)連接權(quán)之前進(jìn)一步包括所述第一中間件獲得其他中間件發(fā)送自身優(yōu)先級(jí)信息,比較第一中間件的優(yōu)先級(jí)和所述其他中間件的優(yōu)先級(jí),得到優(yōu)先級(jí)比較結(jié)果;所述第一中間件將所述優(yōu)先級(jí)比較結(jié)果通知所述其他中間件;
所述優(yōu)先級(jí)比較結(jié)果為,所述第一中間件的優(yōu)先級(jí)高于所述其他中間件的優(yōu)先級(jí)。進(jìn)一步的,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件;所述中間件包括兩個(gè)以上中間件;所述中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明之后,所述第一中間件獲得所述網(wǎng)絡(luò)連接權(quán)之前進(jìn)一步包括所述第一中間件將自身優(yōu)先級(jí)信息發(fā)送給另一中間件;所述第一中間件接收所述另一中間件通知的優(yōu)先級(jí)比較結(jié)果;所述優(yōu)先級(jí)比較結(jié)果指示,所述第一中間件的優(yōu)先級(jí)高于其他中間件的優(yōu)先級(jí); 所述優(yōu)先級(jí)比較結(jié)果由所述另一中間件將所述第一中間件的優(yōu)先級(jí)信息和接收到的其他中間件的優(yōu)先級(jí)信息進(jìn)行比較得到。較優(yōu)的,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括所述第一中間件將保存的所述第一長連接的長連接信息通知其他中間件;所述長連接信息包含數(shù)據(jù)鏈路信息。更優(yōu)的,所述長連接信息進(jìn)一步包含接受消息列表、心跳監(jiān)控?cái)?shù)據(jù)和/或綁定應(yīng)用程序列表;所述第一中間件將保存的所述第一長連接的長連接信息通知其他中間件具體為當(dāng)所述接受消息列表更新、所述心跳監(jiān)控?cái)?shù)據(jù)變化,或所述綁定應(yīng)用程序列表變化時(shí),所述第一中間件將保存的所述第一長連接的所述數(shù)據(jù)鏈路信息通知其他中間件。較優(yōu)的,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括當(dāng)所述第一長連接中斷后,如果所述第一中間件處于正常工作狀態(tài),所述第一中間件根據(jù)保存的所述第一長連接的數(shù)據(jù)鏈路信息,與網(wǎng)絡(luò)側(cè)建立第二長連接。較優(yōu)的,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括當(dāng)所述第一長連接中斷后,如果所述第一中間件處于正常工作之外的狀態(tài),其他中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán),其中,獲得網(wǎng)絡(luò)連接權(quán)的中間件根據(jù)所述第一長連接的數(shù)據(jù)鏈路信息,與網(wǎng)絡(luò)側(cè)建立第三長連接。本發(fā)明同時(shí)提供一種通信設(shè)備的中間件,包括接收單元,用于接收長連接請(qǐng)求,長連接請(qǐng)求由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序向中間件發(fā)送;獲取連接權(quán)單元,用于未有長連接時(shí),發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);連接建立單元,用于獲得網(wǎng)絡(luò)連接權(quán)后,根據(jù)長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;以及通知單元,用于在第一長連接建立后,向第一應(yīng)用程序反饋一通知消息,以使得第一應(yīng)用程序綁定第一長連接,與網(wǎng)絡(luò)側(cè)通信。較優(yōu)的,接收單元進(jìn)一步用于,接收第二應(yīng)用程序發(fā)送的長連接請(qǐng)求,第二應(yīng)用程序需要建立網(wǎng)絡(luò)連接;獲取連接權(quán)單元進(jìn)一步用于,當(dāng)存在第一長連接時(shí),通知上述通知單元;
通知單元進(jìn)一步用于,向第二應(yīng)用程序反饋以通知消息,以使得第二應(yīng)用程序綁定第二長連接,與網(wǎng)絡(luò)側(cè)通信。進(jìn)一步的,該中間件還包含比較單元,用于獲得其他中間件發(fā)送的優(yōu)先級(jí)信息,比較自身優(yōu)先級(jí)信息和其他中間件的優(yōu)先級(jí)信息,得到優(yōu)先級(jí)比較結(jié)果,并發(fā)送給獲取連接權(quán)單元和廣播單元;廣播單元,用于將優(yōu)先級(jí)比較結(jié)果廣播至其他中間件的獲取連接權(quán)單元;獲取連接權(quán)單元進(jìn)一步用于,根據(jù)優(yōu)先級(jí)比較結(jié)果判斷是否取得連接權(quán),當(dāng)自身優(yōu)先級(jí)最高時(shí),通知連接建立單元取得連接權(quán)。進(jìn)一步的,獲取連接權(quán)單元進(jìn)一步用于接收通信設(shè)備操作系統(tǒng)底層的中間件取得連接權(quán)的通知,并通知連接建立單元取得連接權(quán);通知表明中間件在所有發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明的中間件中,被隨機(jī)選擇為獲得網(wǎng)絡(luò)連接權(quán)的中間件。進(jìn)一步的,中間件進(jìn)一步包含連接信息保存單元,用于保存第一長連接的長連接信息;長連接信息包含數(shù)據(jù)鏈路信息。連接信息廣播單元,用于將第一長連接的長連接信息向其他中間件廣播;連接建立單元進(jìn)一步用于,接收其他中間件的連接信息廣播單元發(fā)送的長連接信肩、ο進(jìn)一步的,連接建立單元進(jìn)一步用于,當(dāng)獲知第一長連接中斷時(shí),根據(jù)第一長連接的長連接信息,與網(wǎng)絡(luò)側(cè)建立第二長連接;長連接信息進(jìn)一步包含應(yīng)用程序綁定列表;通知單元進(jìn)一步用于,在第二長連接建立后,向應(yīng)用程序綁定列表中的應(yīng)用程序發(fā)送通知消息,使得應(yīng)用程序綁定列表中的應(yīng)用程序綁定第二長連接,與網(wǎng)絡(luò)側(cè)通信。本發(fā)明還提供一種通信設(shè)備,包含上述各技術(shù)方案中描述的中間件。本發(fā)明實(shí)施例提供的在通信設(shè)備上的中間件,利用中間件的網(wǎng)絡(luò)通信方法,以及包含中間件的通信設(shè)備,使得多個(gè)需要進(jìn)行網(wǎng)絡(luò)連接的應(yīng)用程序,能使用一條長連接,來實(shí)現(xiàn)網(wǎng)絡(luò)通信,降低通信設(shè)備的電量消耗,以及因長連接的心跳監(jiān)測而需的網(wǎng)絡(luò)流量的消耗。
圖1為現(xiàn)有技術(shù)移動(dòng)終端和網(wǎng)絡(luò)通信的示意圖;圖2為本發(fā)明一實(shí)施例的方法流程示意圖;圖3為本發(fā)明一實(shí)施例中通信設(shè)備和網(wǎng)絡(luò)側(cè)通信的示意圖;圖4為本發(fā)明一實(shí)施例的通信設(shè)備和網(wǎng)絡(luò)側(cè)通信的示意圖;圖5為本發(fā)明一實(shí)施例的中間件結(jié)構(gòu)框圖及其與網(wǎng)絡(luò)側(cè)和應(yīng)用程序的連接示意;圖6為本發(fā)明一實(shí)施例的中間件結(jié)構(gòu)框圖及其與網(wǎng)絡(luò)側(cè)和應(yīng)用程序的連接示意。
具體實(shí)施例方式為了使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)地說明。在此,本發(fā)明的示意性實(shí)施例及說明用于解釋本發(fā)明,但并不作為對(duì)本發(fā)明的限定。
參見圖2,本發(fā)明實(shí)施例提供了一種網(wǎng)絡(luò)通信方法,可應(yīng)用于一通信設(shè)備,包括但不限于移動(dòng)終端,比如固定臺(tái)式機(jī),筆記本等個(gè)人計(jì)算機(jī),小型局域網(wǎng)服務(wù)器等都可適用。 該通信設(shè)備包含有中間件,中間件包括第一中間件。該網(wǎng)絡(luò)通信方法包括中間件接收長連接請(qǐng)求,長連接請(qǐng)求由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序發(fā)送;中間件響應(yīng)長連接請(qǐng)求,在未有長連接時(shí),發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);第一中間件在獲得網(wǎng)絡(luò)連接權(quán)后,根據(jù)上述長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;第一中間件在第一長連接建立后,向第一應(yīng)用程序反饋一通知消息,以使得第一應(yīng)用程序綁定第一長連接,與網(wǎng)絡(luò)側(cè)通信。如圖3所示,以移動(dòng)終端為例,移動(dòng)終端中的中間件A與網(wǎng)絡(luò)側(cè)(網(wǎng)絡(luò)端服務(wù)器) 之間建立長連接,移動(dòng)終端中運(yùn)行的多個(gè)應(yīng)用程序,與中間件A之間以短連接報(bào)文的方式建立連接,實(shí)現(xiàn)各個(gè)應(yīng)用程序與網(wǎng)絡(luò)側(cè)之間的數(shù)據(jù)通信。中間件A使得移動(dòng)終端上的多應(yīng)用程序共享網(wǎng)絡(luò)連接,即一條長連接被N個(gè)應(yīng)用程序復(fù)用,使移動(dòng)終端的耗電量節(jié)省為原來的1/N。同時(shí),因長連接需要心跳監(jiān)控,而心跳監(jiān)控通常使用發(fā)送簡短數(shù)據(jù)來實(shí)現(xiàn),在本發(fā)明由多個(gè)應(yīng)用程序共享一條長連接的情況下,心跳監(jiān)控所使用的數(shù)據(jù)也減少了,進(jìn)而節(jié)省了移動(dòng)終端的網(wǎng)絡(luò)流量消耗。通信設(shè)備中可以存在一個(gè)中間件,也可以存在多個(gè)中間件,通常情況下,每個(gè)中間件對(duì)應(yīng)一個(gè)需要與網(wǎng)絡(luò)側(cè)進(jìn)行通信的應(yīng)用程序,如圖4所示。中間件通過開放的應(yīng)用程序接口(API)與應(yīng)用程序進(jìn)行通信,中間件可作為應(yīng)用程序的附帶程序安裝于通信設(shè)備的任意位置,每個(gè)應(yīng)用程序附帶其對(duì)應(yīng)的中間件;中間件也可單獨(dú)安裝于通信設(shè)備特定的磁盤空間中,各應(yīng)用程序通過API與特定磁盤空間的中間件進(jìn)行通信。在通信設(shè)備中只存在一個(gè)中間件的場景中,需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序通過操作系統(tǒng)向該中間件發(fā)送長連接請(qǐng)求,該中間件判斷當(dāng)前不存在長連接,于是發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,作為對(duì)長連接請(qǐng)求的響應(yīng);通信設(shè)備的操作系統(tǒng)底層接收到網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,由于只有一個(gè)中間件,該中間件發(fā)送的網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明即生效,使得該中間件獲得了網(wǎng)絡(luò)連接權(quán)。于是該中間件根據(jù)前述長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立起長連接,便通知第一應(yīng)用程序,第一應(yīng)用程序通過于該中間件建立短連接來綁定該長連接,實(shí)現(xiàn)與網(wǎng)絡(luò)側(cè)的通信。在該中間件與網(wǎng)絡(luò)側(cè)建立了長連接后,如果其他應(yīng)用程序(如第二應(yīng)用程序)也需要與網(wǎng)絡(luò)側(cè)進(jìn)行通信,則通過廣播或單獨(dú)通知的方式(其不一定了解中間件的個(gè)數(shù))發(fā)送長連接請(qǐng)求。此時(shí)只有一個(gè)中間件,所以只有該中間件接收到這個(gè)長連接請(qǐng)求,該中間件向第二應(yīng)用程序共享之前建立的長連接。第二應(yīng)用程序通過與該中間件建立短連接來綁定該共享的長連接,實(shí)現(xiàn)與網(wǎng)絡(luò)側(cè)的通信。當(dāng)通信設(shè)備中存在兩個(gè)或兩個(gè)以上中間件時(shí),需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序以廣播或單獨(dú)通知的方式向所有中間件發(fā)送長連接請(qǐng)求,假設(shè)此時(shí)通信設(shè)備有三個(gè)中間件 A、B、C。中間件A、B、C都收到第一應(yīng)用程序發(fā)送的長連接請(qǐng)求,此時(shí)并未存在任何長連接, 所以都發(fā)送了網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明來進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶,而如何確定由哪個(gè)中間件與網(wǎng)絡(luò)側(cè)最終建立長連接,有以下幾種方式。
—種方式為,中間件A、B、C向操作系統(tǒng)底層發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,作為對(duì)長連接請(qǐng)求的響應(yīng)。操作系統(tǒng)底層可以隨機(jī)的方式,選擇中間件A的網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明生效、這樣,中間件A獲得了連接請(qǐng)求權(quán),于是向網(wǎng)絡(luò)側(cè)發(fā)送網(wǎng)絡(luò)連接請(qǐng)求,最后與網(wǎng)絡(luò)側(cè)建立長連接。上述隨機(jī)方式的一個(gè)可替代的方案為,操作系統(tǒng)隨機(jī)先選擇其中的一個(gè)中間件作為臨時(shí)判斷中間件,并通知所有中間件。比如此例采用Android操作系統(tǒng),中間件B被選為臨時(shí)判斷中間件(Local Socket Server,由其獲取其他中間件的優(yōu)先級(jí),并進(jìn)行優(yōu)先級(jí)仲裁),中間件A和C將自己的優(yōu)先權(quán)信息發(fā)送給中間件B。此處的優(yōu)先權(quán)信息主要指中間件的版本號(hào)。由于每個(gè)中間件的升級(jí)(或更新),是隨著其對(duì)應(yīng)的應(yīng)用程序的更新而更新的, 而應(yīng)用程序啟動(dòng)升級(jí)的時(shí)間各有不同,致使中間件的版本存在差異,最近升級(jí)的中間件的版本號(hào)最高。由于操作系統(tǒng)底層不會(huì)去掌握(保存)這些信息,所以無法直接從三個(gè)中間件中獲知優(yōu)先級(jí)最高的中間件而直接指定該中間件發(fā)送的網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明生效。中間件B將這三個(gè)中間件的版本號(hào)進(jìn)行判斷排序,生成優(yōu)先級(jí)列表,版本號(hào)越高的優(yōu)先級(jí)越高。 當(dāng)部分中間件的版本號(hào)相同時(shí),中間件B可對(duì)版本號(hào)相同的中間件進(jìn)行隨機(jī)排序,或按照收到版本號(hào)的時(shí)間先后,或者按照中間件的序號(hào)等排序。本例中,假設(shè)版本號(hào)由高到低分別是中間件A、中間件B、中間件C,中間件B將列表通知中間件A和中間件C,中間件A獲知自己的優(yōu)先級(jí)最高,其獲得網(wǎng)絡(luò)連接權(quán),向網(wǎng)絡(luò)側(cè)發(fā)送連接請(qǐng)求。另一種方式為,中間件A、B、C向操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明來進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶。各中間件在網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明上附帶一條隨機(jī)延遲信息,比如中間件A延遲 10ms,中間件B延遲15ms,中間件C延遲20ms,這些時(shí)間是隨機(jī)產(chǎn)生的。操作系統(tǒng)對(duì)這些延遲時(shí)間進(jìn)行比較,通知延遲時(shí)間最短的中間件其網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明生效,此例中中間件A 的網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明生效,中間件A獲得了網(wǎng)絡(luò)連接權(quán)。同樣可替代的,多個(gè)中間件提出網(wǎng)絡(luò)連接權(quán)限聲明時(shí),隨機(jī)的,中間件A成為臨時(shí)判斷中間件,其他中間件將自己的版本號(hào)發(fā)送至中間件A,中間件A獲知所有中間件的版本級(jí)別后,判斷網(wǎng)絡(luò)連接權(quán)限的優(yōu)先級(jí),版本高的中間件其網(wǎng)絡(luò)連接權(quán)限的優(yōu)先級(jí)相應(yīng)的高, 最后得到優(yōu)先級(jí)列表并周知所有中間件。此例中,中間件A自己位于優(yōu)先級(jí)列表第一位,其獲得網(wǎng)絡(luò)連接權(quán),與網(wǎng)絡(luò)側(cè)建立長連接后,通知廣播長連接請(qǐng)求的應(yīng)用程序。在中間件A與網(wǎng)絡(luò)側(cè)建立了長連接后,如果其他應(yīng)用程序(如第二應(yīng)用程序)也需要與網(wǎng)絡(luò)側(cè)進(jìn)行通信,則通過操作系統(tǒng),以廣播或單獨(dú)通知的方式(其不一定了解中間件的個(gè)數(shù))發(fā)送長連接請(qǐng)求。此時(shí)中間件A已經(jīng)成功與網(wǎng)絡(luò)側(cè)建立了長連接,所以它接收到這個(gè)長連接請(qǐng)求后,通知第二應(yīng)用程序,共享之前已經(jīng)建立的長連接。第二應(yīng)用程序通過與中間件A建立短連接來綁定該共享的長連接,實(shí)現(xiàn)與網(wǎng)絡(luò)側(cè)的通信。在共享長連接的網(wǎng)絡(luò)通信中,由應(yīng)用程序傳輸至網(wǎng)絡(luò)側(cè)的數(shù)據(jù),以及由網(wǎng)絡(luò)側(cè)傳遞至各應(yīng)用程序的數(shù)據(jù),標(biāo)有各應(yīng)用程序的標(biāo)簽(Tab),使得中間件接受到該數(shù)據(jù)后,能進(jìn)行正確的轉(zhuǎn)發(fā)。在中間件A建立長連接后,其它中間件處于等待狀態(tài),在下面幾種情況下,其他中間件再進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶比如有新的應(yīng)用程序(比如應(yīng)用程序三)發(fā)出長連接請(qǐng)求的通知時(shí)(以廣播或單獨(dú)通知的形式通知),每個(gè)中間件收到了長連接請(qǐng)求,于是都發(fā)送網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明, 進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶。此時(shí),因?yàn)橹虚g件A與網(wǎng)絡(luò)側(cè)的長連接正常,所以其他中間件的網(wǎng)絡(luò)連接權(quán)限聲明不會(huì)生效,中間件A的網(wǎng)絡(luò)連接權(quán)限聲明才會(huì)生效,仍由中間件A向應(yīng)用程序三共享已經(jīng)建立的長連接。再一種是在網(wǎng)絡(luò)切換的情況下,比如由通信設(shè)備由WIFI連接轉(zhuǎn)為GPRS連接,或者由2G網(wǎng)絡(luò)轉(zhuǎn)至3G網(wǎng)絡(luò),或者長連接因?yàn)樾盘?hào)原因中斷,由于此時(shí)中間件A還處于正常工作狀態(tài),中間件A仍具有網(wǎng)絡(luò)連接權(quán)。在網(wǎng)絡(luò)切換完成后,中間件A向網(wǎng)絡(luò)側(cè)發(fā)送的網(wǎng)絡(luò)連接請(qǐng)求即可使中間件A與網(wǎng)絡(luò)側(cè)建立新的長連接。再比如當(dāng)通信設(shè)備由于各種原因重新啟動(dòng)時(shí),因?yàn)椴僮飨到y(tǒng)的所有進(jìn)程都斷開, 所以當(dāng)重新啟動(dòng)成功后,所有中間件可再次進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶。還有一種情況,即中間件A處于正常工作狀態(tài)之外的狀態(tài)時(shí),比如其對(duì)應(yīng)的應(yīng)用程序升級(jí)時(shí),中間件無論是否有更新版本,也會(huì)從正常工作狀態(tài)中退出,或者該應(yīng)用程序被卸載時(shí),或者因其他原因致中間件A損壞時(shí),中間件A的網(wǎng)絡(luò)連接權(quán)失效,其他中間件再次進(jìn)行網(wǎng)絡(luò)連接權(quán)的爭搶。各中間件一般以輪詢或者輪詢遞進(jìn)的方式獲知是否有其它中間處于正常工作狀態(tài),輪詢遞進(jìn)可以為,開始以一定的時(shí)間間隔來發(fā)送網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明,其網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明沒有生效則表明目前已有其它中間件處于正常工作狀態(tài),隨后輪詢間隔時(shí)間隨著多次網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明沒有生效而逐漸延長,到一定的時(shí)限便維持在該間隔時(shí)間來發(fā)送網(wǎng)絡(luò)連接請(qǐng)求權(quán)限聲明。當(dāng)中間件A處于正常工作狀態(tài)之外的狀態(tài)時(shí),其他中間件便可獲知并開始進(jìn)行網(wǎng)絡(luò)連接權(quán)的再次爭搶了。在中間件A建立長連接后,其將保存(緩存、保存并定期刪除或保存且接道刪除指令時(shí)刪除等方式)的長連接信息發(fā)送給其它中間件(比如以廣播方式),長連接信息包括數(shù)據(jù)鏈路信息(比如網(wǎng)絡(luò)服務(wù)器端口信息)、接受消息列表、心跳監(jiān)控?cái)?shù)據(jù)、應(yīng)用程序綁定列表等。中間件A可以定時(shí)廣播,或者當(dāng)其保存的長連接信息發(fā)生變化時(shí),將其長連接的數(shù)據(jù)鏈路信息緩存,并廣播至其它中間件。其保存的長連接信息發(fā)生變化的情況包括接受消息列表更新,如中間件A收到網(wǎng)絡(luò)側(cè)消息后發(fā)送了反饋回執(zhí),則造成接受消息列表(或消息發(fā)送映射)的更新;心跳監(jiān)控變化,如網(wǎng)絡(luò)側(cè)服務(wù)器端根據(jù)網(wǎng)絡(luò)連接狀態(tài),改變心跳監(jiān)測的頻率,隨著連接狀況趨于穩(wěn)定使心跳檢測的頻率調(diào)低;綁定更新,即長連接共享給新的應(yīng)用程序,或有綁定的應(yīng)用程序退出綁定(關(guān)閉、 卸載)等。更新的長連接信息被廣播給其他中間件,待發(fā)生上述使其他中間件再次對(duì)網(wǎng)絡(luò)連接權(quán)進(jìn)行爭搶的情形時(shí),其他中間件獲得了最新的長連接信息,其中,獲得網(wǎng)絡(luò)連接權(quán)的中間件便可實(shí)現(xiàn)中間件的“無縫切換”,比如周知原來向中間件A綁定的應(yīng)用程序,向這些應(yīng)用程序共享其新建立的長連接。本發(fā)明同時(shí)提供通信設(shè)備中的中間件,在圖5所示一個(gè)實(shí)施例中,中間件包含接收單元,用于接收由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序向該中間件發(fā)送的長連接請(qǐng)求;
獲取連接權(quán)單元,用于在未有長連接時(shí),發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);連接建立單元,用于獲得網(wǎng)絡(luò)連接權(quán)后,根據(jù)長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;以及通知單元,用于在第一長連接建立后,向第一應(yīng)用程序反饋一通知消息,以使得第一應(yīng)用程序綁定第一長連接,與網(wǎng)絡(luò)側(cè)通信。在通信設(shè)備具有兩個(gè)或兩個(gè)以上中間件的實(shí)施例中,如圖6所示,中間件還包含比較單元,用于獲得中間件發(fā)送的優(yōu)先級(jí)信息,比較自身優(yōu)先級(jí)信息和其他中間件的優(yōu)先級(jí)信息,得到優(yōu)先級(jí)比較結(jié)果,并發(fā)送給獲取連接權(quán)單元和廣播單元;以及廣播單元,用于將優(yōu)先級(jí)比較結(jié)果廣播至其他中間件的獲取連接權(quán)單元。在這個(gè)實(shí)施例中,獲取連接權(quán)單元進(jìn)一步用于,根據(jù)優(yōu)先級(jí)比較結(jié)果判斷是否取得連接權(quán),當(dāng)自身優(yōu)先級(jí)最高時(shí),通知連接建立單元取得連接權(quán)。同樣以中間件A、B和C為例,三個(gè)中間件都收到第一應(yīng)用程序通過操作系統(tǒng)廣播或單獨(dú)發(fā)送的長連接請(qǐng)求,作為響應(yīng),三個(gè)中間件向通信設(shè)備(比如移動(dòng)終端)的操作系統(tǒng)底層發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán)。操作系統(tǒng)底層隨機(jī)選擇了中間件B 作為臨時(shí)判斷中間件(Local Socket Server)。中間件A和C于是將自己的版本號(hào)發(fā)送給中間件B,即此時(shí)只有中間件B的比較單元會(huì)收到其他中間件的優(yōu)先級(jí)信息。中間件B形成的優(yōu)先級(jí)比較結(jié)果可以為一優(yōu)先級(jí)列表,按由高到低或由低到高的順序排列各中間件的優(yōu)先級(jí),版本號(hào)越高的優(yōu)先級(jí)越高?;蛘?,優(yōu)先級(jí)比較結(jié)果可以僅為最高優(yōu)先級(jí)的中間件(在最高版本號(hào)為多個(gè)時(shí)隨機(jī)選擇一個(gè)),只要讓各中間件知曉是誰取得網(wǎng)絡(luò)連接權(quán)即可。在另一在通信設(shè)備具有兩個(gè)或兩個(gè)以上中間件的實(shí)施例中,中間件A、B和C都收到第一應(yīng)用程序通過操作系統(tǒng)廣播或單獨(dú)發(fā)送的長連接請(qǐng)求,假設(shè)此時(shí)不存在長連接,作為響應(yīng),三個(gè)中間件向通信設(shè)備(比如移動(dòng)終端)的操作系統(tǒng)底層發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán)。操作系統(tǒng)底層隨機(jī)選擇了中間件B,即中間件B的獲取連接權(quán)單元接收到通信設(shè)備操作系統(tǒng)底層的一通知,通知中間件B取得了網(wǎng)絡(luò)連接權(quán),獲取連接權(quán)單元通知連接建立單元取得了連接權(quán),連接建立單元于是向網(wǎng)絡(luò)側(cè)發(fā)送連接請(qǐng)求,建立長連接。在另一個(gè)實(shí)施例中,接收單元接收到需要建立網(wǎng)絡(luò)連接的第二應(yīng)用程序發(fā)送的長連接請(qǐng)求時(shí),如圖5所示,獲取連接權(quán)單元進(jìn)一步用于,當(dāng)存在第一長連接時(shí),通知通知單元;通知單元進(jìn)一步用于,向第二應(yīng)用程序反饋以通知消息,以使得第二應(yīng)用程序綁定第二長連接,與網(wǎng)絡(luò)側(cè)通信。本例中,多個(gè)中間件接到第二應(yīng)用程序廣播的長連接請(qǐng)求,可由連接建立單元直接獲取該請(qǐng)求后,判斷是否已經(jīng)由本中間件建立了長連接,即是否已經(jīng)建立了長連接并且由該連接建立單元所在的中間件建立該長連接。如果是,則該連接建立單元通知與其連接的通知單元,由通知單元告知第二應(yīng)用程序。也可由獲取連接權(quán)單元獲取長連接請(qǐng)求后,轉(zhuǎn)發(fā)給連接建立單元先行做出上述判斷??商娲姆桨钢?,多個(gè)中間件接到第二應(yīng)用程序廣播的長連接請(qǐng)求,各獲取連接權(quán)單元直接發(fā)出網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,當(dāng)長連接已經(jīng)建立時(shí),只有其中的一個(gè)中間件是該長連接的發(fā)起者和起始端,所以只有該中間件發(fā)出的網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明是有效的(即該中間件具有網(wǎng)絡(luò)連接權(quán)),此時(shí)該獲取連接權(quán)單元通知連接建立單元,連接建立單元判斷自己已經(jīng)建立了長連接,于是通知通知單元,由通知單元向第二應(yīng)用程序發(fā)出共享長連接的通知。更優(yōu)的,中間件進(jìn)一步包含連接信息保存單元,用于保存第一長連接的長連接信息;該長連接信息包含數(shù)據(jù)鏈路信息,同時(shí)可以進(jìn)一步包含應(yīng)用程序綁定列表、接受消息列表更新、心跳監(jiān)控?cái)?shù)據(jù)變化等;連接信息廣播單元,用于將第一長連接的連接信息向其他中間件廣播;上述連接建立單元進(jìn)一步用于,接收其他中間件的連接信息廣播單元發(fā)送的長連接信息。這樣,如果建立當(dāng)前長連接的并非該中間件,該中間件也能實(shí)時(shí)獲知當(dāng)前長連接的最新長連接信息,以便在當(dāng)前長連接中斷,且是由于當(dāng)前工作的中間件由于升級(jí)、被卸載以及被損壞,或者整個(gè)通信設(shè)備重啟等原因時(shí),爭搶到網(wǎng)絡(luò)連接權(quán),也能進(jìn)行中間件的無縫切換。比如,利用上次長連接中,與中間件綁定的應(yīng)用程序列表,在本次長連接建立之后,通知該列表中的應(yīng)用程序,使得本次長連接能方便快捷的為這些應(yīng)用程序共享。本發(fā)明還同時(shí)提供了包含上述實(shí)施例中中間件的通信設(shè)備,使用這樣的通信設(shè)備,使多應(yīng)用程序共享一條長連接,由此能節(jié)省設(shè)備的功耗以及網(wǎng)絡(luò)流量,同時(shí),即使在中間件從正常工作狀態(tài)轉(zhuǎn)化為非正常工作狀態(tài)時(shí),亦能實(shí)現(xiàn)中間件的無縫切換,從而不影響其他應(yīng)用程序的網(wǎng)絡(luò)連接。中間件可以是通信設(shè)備上隨應(yīng)用程序一起安裝的附帶程序,亦可以是通信設(shè)備中一硬件單元,只要能實(shí)現(xiàn)對(duì)多應(yīng)用程序的網(wǎng)絡(luò)連接共享即可。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種網(wǎng)絡(luò)通信方法,應(yīng)用于一通信設(shè)備,其特征在于,所述通信設(shè)備包含中間件,所述網(wǎng)絡(luò)通信方法包括所述中間件接收長連接請(qǐng)求,所述長連接請(qǐng)求由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序發(fā)送;如果未有長連接,所述中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán); 獲得所述網(wǎng)絡(luò)連接權(quán)的第一中間件,根據(jù)所述長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;所述第一中間件在所述第一長連接建立后,向所述第一應(yīng)用程序反饋一通知消息,以使得所述第一應(yīng)用程序綁定所述第一長連接,與網(wǎng)絡(luò)側(cè)通信。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)通信方法,其特征在于,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括所述中間件接收第二應(yīng)用程序發(fā)送的長連接請(qǐng)求;所述第一中間件向所述第二應(yīng)用程序共享所述第一長連接,使得所述第二應(yīng)用程序綁定所述第一長連接,與網(wǎng)絡(luò)側(cè)通信。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)通信方法,其特征在于,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件; 所述中間件包括兩個(gè)以上中間件;在所述中間件中,所述第一中間件以隨機(jī)方式獲得所述網(wǎng)絡(luò)連接權(quán)。
4.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)通信方法,其特征在于,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件; 所述中間件包括兩個(gè)以上中間件;所述中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明之后,所述第一中間件獲得所述網(wǎng)絡(luò)連接權(quán)之前進(jìn)一步包括所述第一中間件獲得其他中間件發(fā)送自身優(yōu)先級(jí)信息,比較第一中間件的優(yōu)先級(jí)和所述其他中間件的優(yōu)先級(jí),得到優(yōu)先級(jí)比較結(jié)果;所述第一中間件將所述優(yōu)先級(jí)比較結(jié)果通知所述其他中間件;所述優(yōu)先級(jí)比較結(jié)果為,所述第一中間件的優(yōu)先級(jí)高于所述其他中間件的優(yōu)先級(jí)。
5.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)通信方法,其特征在于,所述長連接請(qǐng)求由所述第一應(yīng)用程序以廣播方式發(fā)送至所述中間件; 所述中間件包括兩個(gè)以上中間件;所述中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明之后,所述第一中間件獲得所述網(wǎng)絡(luò)連接權(quán)之前進(jìn)一步包括所述第一中間件將自身優(yōu)先級(jí)信息發(fā)送給另一中間件; 所述第一中間件接收所述另一中間件通知的優(yōu)先級(jí)比較結(jié)果; 所述優(yōu)先級(jí)比較結(jié)果指示,所述第一中間件的優(yōu)先級(jí)高于其他中間件的優(yōu)先級(jí);所述優(yōu)先級(jí)比較結(jié)果由所述另一中間件將所述第一中間件的優(yōu)先級(jí)信息和接收到的其他中間件的優(yōu)先級(jí)信息進(jìn)行比較得到。
6.根據(jù)權(quán)利要求3 5所述的網(wǎng)絡(luò)通信方法,其特征在于,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括所述第一中間件將保存的所述第一長連接的長連接信息通知其他中間件;所述長連接信息包含數(shù)據(jù)鏈路信息。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)通信方法,其特征在于,所述長連接信息進(jìn)一步包含接受消息列表、心跳監(jiān)控?cái)?shù)據(jù)和/或綁定應(yīng)用程序列表; 所述第一中間件將保存的所述第一長連接的長連接信息通知其他中間件具體為 當(dāng)所述接受消息列表更新、所述心跳監(jiān)控?cái)?shù)據(jù)變化,或所述綁定應(yīng)用程序列表變化時(shí), 所述第一中間件將保存的所述第一長連接的所述數(shù)據(jù)鏈路信息通知其他中間件。
8.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)通信方法,其特征在于,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括當(dāng)所述第一長連接中斷后,如果所述第一中間件處于正常工作狀態(tài),所述第一中間件根據(jù)保存的所述第一長連接的數(shù)據(jù)鏈路信息,與網(wǎng)絡(luò)側(cè)建立第二長連接。
9.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)通信方法,其特征在于,所述第一中間件與網(wǎng)絡(luò)側(cè)建立第一長連接之后,所述方法進(jìn)一步包括當(dāng)所述第一長連接中斷后,如果所述第一中間件處于正常工作之外的狀態(tài),其他中間件發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán),其中,獲得網(wǎng)絡(luò)連接權(quán)的中間件根據(jù)所述第一長連接的數(shù)據(jù)鏈路信息,與網(wǎng)絡(luò)側(cè)建立第三長連接。
10.一種通信設(shè)備的中間件,其特征在于,包括 接收單元,用于接收長連接請(qǐng)求,所述長連接請(qǐng)求由需要建立網(wǎng)絡(luò)連接的第一應(yīng)用程序發(fā)送;獲取連接權(quán)單元,用于未有長連接時(shí),發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明,請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);連接建立單元,用于獲得所述網(wǎng)絡(luò)連接權(quán)后,根據(jù)所述長連接請(qǐng)求,與網(wǎng)絡(luò)側(cè)建立第一長連接;以及通知單元,用于在所述第一長連接建立后,向所述第一應(yīng)用程序反饋一通知消息,以使得所述第一應(yīng)用程序綁定所述第一長連接,與網(wǎng)絡(luò)側(cè)通信。
11.根據(jù)權(quán)利要求10所述的中間件,其特征在于,所述接收單元進(jìn)一步用于,接收所述第二應(yīng)用程序發(fā)送的長連接請(qǐng)求,所述第二應(yīng)用程序需要建立網(wǎng)絡(luò)連接;所述獲取連接權(quán)單元進(jìn)一步用于,當(dāng)存在所述第一長連接時(shí),通知所述通知單元; 所述通知單元進(jìn)一步用于,向所述第二應(yīng)用程序反饋以通知消息,以使得所述第二應(yīng)用程序綁定所述第二長連接,與網(wǎng)絡(luò)側(cè)通信。
12.根據(jù)權(quán)利要求11所述的中間件,其特征在于,所述中間件進(jìn)一步包括比較單元,用于獲得其他中間件發(fā)送的優(yōu)先級(jí)信息,比較自身優(yōu)先級(jí)信息和所述其他中間件的優(yōu)先級(jí)信息,得到優(yōu)先級(jí)比較結(jié)果,并發(fā)送給所述獲取連接權(quán)單元和廣播單元; 所述廣播單元,用于將所述優(yōu)先級(jí)比較結(jié)果廣播至所述其他中間件的獲取連接權(quán)單元;所述獲取連接權(quán)單元進(jìn)一步用于,根據(jù)所述優(yōu)先級(jí)比較結(jié)果判斷是否取得連接權(quán),當(dāng)自身優(yōu)先級(jí)最高時(shí),通知所述連接建立單元取得連接權(quán)。
13.根據(jù)權(quán)利要求11所述的中間件,其特征在于,所述獲取連接權(quán)單元進(jìn)一步用于接收所述通信設(shè)備操作系統(tǒng)底層的所述中間件取得連接權(quán)的通知,并通知所述連接建立單元取得連接權(quán);所述通知表明,所述中間件在所有發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明的中間件中,被隨機(jī)選擇為獲得所述網(wǎng)絡(luò)連接權(quán)的中間件。
14.根據(jù)權(quán)利要求12或13的中間件,其特征在于,所述中間件進(jìn)一步包含連接信息保存單元,用于保存所述第一長連接的長連接信息;所述長連接信息包含數(shù)據(jù)鏈路信息。連接信息廣播單元,用于將所述第一長連接的長連接信息向其他中間件廣播; 所述連接建立單元進(jìn)一步用于,接收其他中間件的連接信息廣播單元發(fā)送的長連接信肩、ο
15.根據(jù)權(quán)利要求14所述的中間件,其特征在于,連接建立單元進(jìn)一步用于,當(dāng)獲知所述第一長連接中斷時(shí),根據(jù)所述第一長連接的長連接信息,與網(wǎng)絡(luò)側(cè)建立第二長連接;所述長連接信息進(jìn)一步包含應(yīng)用程序綁定列表;所述通知單元進(jìn)一步用于,在所述第二長連接建立后,向所述應(yīng)用程序綁定列表中的應(yīng)用程序發(fā)送通知消息,使得所述應(yīng)用程序綁定列表中的應(yīng)用程序綁定所述第二長連接, 與網(wǎng)絡(luò)側(cè)通信。
16.一種通信設(shè)備,其特征在于,包含如權(quán)利要求10 15中任一項(xiàng)所述的中間件。
全文摘要
本發(fā)明的實(shí)施例提供一種網(wǎng)絡(luò)通信方法、通信設(shè)備以及通信設(shè)備上的中間件,該網(wǎng)絡(luò)通信方法包括中間件接收到應(yīng)用程序的長連接請(qǐng)求,當(dāng)未有長連接時(shí),發(fā)送網(wǎng)絡(luò)連接權(quán)請(qǐng)求聲明來請(qǐng)求獲得網(wǎng)絡(luò)連接權(quán);獲得網(wǎng)絡(luò)連接權(quán)的中間件與網(wǎng)絡(luò)側(cè)建立長連接后,通知發(fā)出請(qǐng)求的應(yīng)用程序,使得該應(yīng)用程序綁定該長連接,與網(wǎng)絡(luò)側(cè)通信。使得多個(gè)需要進(jìn)行網(wǎng)絡(luò)連接的應(yīng)用程序,能使用同一條長連接,來實(shí)現(xiàn)網(wǎng)絡(luò)通信,降低通信設(shè)備的電量消耗,以及因長連接的心跳監(jiān)測而需的網(wǎng)絡(luò)流量的消耗。
文檔編號(hào)H04W52/02GK102291808SQ20111014968
公開日2011年12月21日 申請(qǐng)日期2011年6月3日 優(yōu)先權(quán)日2011年6月3日
發(fā)明者趙亮 申請(qǐng)人:莫雅靜