• / 15
  • 下載費用:30 金幣  

一種應用程序的心跳包控制方法和裝置.pdf

摘要
申請專利號:

CN201510378937.7

申請日:

2015.06.27

公開號:

CN104991850A

公開日:

2015.10.21

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||著錄事項變更IPC(主分類):G06F 11/30變更事項:申請人變更前:廣州華多網絡科技有限公司變更后:廣州華多網絡科技有限公司變更事項:地址變更前:510655 廣東省廣州市黃埔大道中309號羊城創意產業園3-08棟變更后:510000 廣東省廣州市番禺區南村鎮萬博商務區萬達廣場B1座28層|||實質審查的生效IPC(主分類):G06F 11/30申請日:20150627|||公開
IPC分類號: G06F11/30; H04L12/26; H04L29/06 主分類號: G06F11/30
申請人: 廣州華多網絡科技有限公司
發明人: 劉勝華; 王啟明; 申動斌
地址: 510655廣東省廣州市黃埔大道中309號羊城創意產業園3-08棟
優先權:
專利代理機構: 廣州三環專利代理有限公司44202 代理人: 郝傳鑫; 熊永強
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510378937.7

授權公告號:

|||||||||

法律狀態公告日:

2018.06.19|||2018.01.12|||2015.11.18|||2015.10.21

法律狀態類型:

授權|||著錄事項變更|||實質審查的生效|||公開

摘要

本發明實施例公開了一種應用程序的心跳包控制方法,包括:監測應用程序的運行狀態;當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器;當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。本發明實施例還公開了一種應用程序的心跳包的控制方法。采用本發明,提高應用程序對網絡環境的適應性。

權利要求書

權利要求書
1.  一種應用程序的心跳包控制方法,其特征在于,包括:
監測應用程序的運行狀態;
當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器;
當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。

2.  如權利要求1所述的方法,其特征在于,所述指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器,還包括:
指示所述應用程序在第一時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回心跳響應包時,指示所述應用程序在第二時刻發送下一心跳檢測包;其中所述第二時刻至所述第一時刻的時間間隔大于所述第一時間間隔;
若預設時長內所述應用程序未接收到所述服務器返回的心跳響應包時,指示所述應用程序在第三時刻發送下一心跳檢測包;其中,所述第三時刻至所述第一時刻的時間間隔小于所述第一時間間隔。

3.  如權利要求1所述的方法,其特征在于,所述指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器,還包括:
指示所述應用程序在第四時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回的心跳響應包,指示所述應用程序在第五時刻發送下一心跳檢測包;其中,所述第五時刻至所述第三時刻的時間間隔大于所述第二時間間隔;
若所述預設時長內所述應用程序未接收到所述服務器返回的心跳響應包,指示所述應用程序在第六時刻發送下一心跳檢測包;其中,所述第六時刻至所述第四時刻的時間間隔小于所述第二時間間隔。

4.  如權利要求2或3所述的方法,其特征在于,還包括:
統計所述服務器超時的次數;其中,所述服務器超時表示所述應用程序在所述預設時長內未接收到所述服務器返回的心跳響應包;
若所述次數大于次數閾值時,獲取備用的多個服務器的網絡狀態參數,將網絡狀態參數最優的備用服務器作為目標服務器,且與所述目標服務器建立通信連接。

5.  如權利要求1所述的方法,其特征在于,所述監測應用程序的運行狀態包括:
接收系統廣播,并根據所述系統廣播中攜帶的狀態標識符確定所述應用程序的運行狀態。

6.  如權利要求1-5任意一項所述的方法,其特征在于,還包括:
當系統的資源占用率大于占用率閾值時,獲取全部為后臺運行狀態的應用程序的優先級,以及關閉優先級小于優先級閾值的應用程序;其中,所述資源利用率包括CUP占用率和/或內存占用率。

7.  一種應用程序的心跳包控制裝置,其特征在于,包括:
監測模塊,用于監測應用程序的運行狀態;
第一調整模塊,用于當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器;
第二調整模塊,用于當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。

8.  如權利要求7所述的裝置,其特征在于,所述第一調整模塊還用于:
指示所述應用程序在第一時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回心跳響應包時,指示所述應用程序在第二時刻發送下一心跳檢測包;其中所述第二時刻至所述第一時刻的時間間隔大于所述第一時間間隔;
若預設時長內所述應用程序未接收到所述服務器返回的心跳響應包時,指示所述應用程序在第三時刻發送下一心跳檢測包;其中,所述第三時刻至所述第一時刻的時間間隔小于所述第一時間間隔。

9.  如權利要求7所述的裝置,其特征在于,所述第二調整模塊還用于:
指示所述應用程序在第四時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回的心跳響應包,指示所述應用程序在第五時刻發送下一心跳檢測包;其中,所述第五時刻至所述第三時刻的時間間隔大于所述第二時間間隔;
若所述預設時長內所述應用程序未接收到所述服務器返回的心跳響應包,指示所述應用程序在第六時刻發送下一心跳檢測包;其中,所述第六時刻至所述第四時刻的時間間隔小于所述第二時間間隔。

10.  如權利要求8或9所述的裝置,其特征在于,還包括:
統計模塊,用于統計所述服務器超時的次數;其中,所述服務器超時表示所述應用程序在所述預設時長內未接收到所述服務器返回的心跳響應包;
重連接模塊,用于若所述次數大于次數閾值時,獲取備用的多個服務器的網絡狀態參數,將網絡狀態參數最優的備用服務器作為目標服務器,且與所述目標服務器建立通信連接。

11.  如權利要求7所述的裝置,其特征在于,所述監測模塊具體用于接收系統廣播,并根據所述系統廣播中攜帶的狀態標識符確定所述應用程序的運行狀態。

12.  如權利要求7-11任意一項所述的裝置,其特征在于,還包括:
關閉模塊,用于當系統的資源占用率大于占用率閾值時,獲取全部為后臺運行狀態的應用程序的優先級,以及關閉優先級小于優先級閾值的應用程序;其中,所述資源利用率包括CUP占用率和/或內存占用率。

說明書

說明書一種應用程序的心跳包控制方法和裝置
技術領域
本發明涉及互聯網領域,尤其涉及一種應用程序的心跳包括控制方法和裝置。
背景技術
隨著互聯網技術的發展,軟件廠商開發了各種各樣運行于便攜的移動終端之上的應用程序,這些應用程序可以通過無線方式(例如2G、3G、4G或WiFi等無線方式)接入互聯網中的服務器,和傳統的PC通過有線方式接入互聯網不同,移動終端由于采用無線方式接入,移動終端的位置不固定,網絡信號變化頻繁,移動終端上的應用程序與互聯網之間的網絡連接狀態十分復雜。移動終端和服務器的持續穩定的網絡連接狀態直接決定了用戶體驗,沒有可靠的網絡連接狀態作為基礎,服務器無法為應用程序提供良好的服務。因此,怎樣保持應用程序和服務器的可靠的網絡連接狀態稱為亟待解決的問題。
目前心跳包技術被廣泛應用于客戶端和服務器之間,用于發現網絡異常發現,在從多場合均可適用。心跳包技術的原理為:客戶端周期性的采用固定的時間間隔向互聯網中的服務器發送心跳檢測包,客戶端判斷在預設時長內是否接收到服務器返回的心跳響應包,如果為否,客戶端就認為與服務器之間的網絡連接已惡化(例如超時、中斷或堵塞),不再合適提供網絡服務,然后客戶端采用重連接或者重選服務器的方法來嘗試恢復連接。
從上述的心跳包技術的原理可以看出,在移動終端所處的網絡環境十分復雜,如果采用固定的時間間隔發送心跳檢測包的方式,設置的時間間隔太小,容易增加移動終端的處理開銷,設置的時間間隔太大,又不能及時發現網絡異常,無法適應網絡環境的頻繁變化。
發明內容
本發明實施例所要解決的技術問題在于,提供一種應用程序的心跳包控制 方法和裝置。可解決現有技術中采用固定時間間隔發送心跳檢測包,無法使用網絡環境的頻繁變化的問題。
為了解決上述技術問題,本發明實施例提供了一種應用程序的心跳包控制方法,包括:
監測應用程序的運行狀態;
當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器;
當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。
相應地,本發明實施例還提供了應用程序的心跳包控制裝置,包括:
監測模塊,用于監測應用程序的運行狀態;
第一調整模塊,用于當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器;
第二調整模塊,用于當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。
實施本發明實施例,具有如下有益效果:
監測應用程序的運行狀態,在不同的運行狀態指示應用程序以不同的時間間隔向服務器發送心跳檢測包,這樣可以自適應的調整應用程序發送心跳檢測包的時間間隔,能良好的匹配應用程序的網絡環境。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例提供的一種直播網絡架構示意圖。
圖2是發明實施例提供的一種應用程序的心跳包控制方法的流程示意圖;
圖3是本發明實施例提供的一種應用程序的心跳包控制方法的另一流程示 意圖;
圖4是本發明實施例提供的一種應用程序的心跳包控制裝置的結構示意圖;
圖5是本發明實施例提供的一種應用程序的心跳包控制裝置的另一結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
為了更好理解本發明實施例公開的一種心跳包的控制方法和裝置,下面先對本發明實施例適用的直播網絡構架進行描述。請參閱圖1,圖1是本發明實施例公開的一種直播網絡構架示意圖。如圖1所示,該直播網絡構架可以包括服務器以及多個客戶端,其中,服務器也被稱后臺服務器、組件服務器等,服務器可以通過互聯網與多個客戶端進行通信連接。
在圖1所示的直播網絡構架中,多個客戶端中的部分客戶端可以作為主播客戶端,而其余客戶端可以作為觀眾客戶端,主播客戶端表示運行有主播應用程序的客戶端,觀眾客戶端表示運行有觀眾應用程序的客戶端。本發明實施例中,頻道簡單來講就是服務器創建的一種虛擬空間(或虛擬房間),位于該虛擬空間內的觀眾客戶端可以不僅觀看主播客戶端的直播內容,還可以和主播客戶端進行語音或文字的交互。主播客戶端對接入其頻道內的其余觀眾客戶端不僅具有接入、踢出控制權,還具有直播主動權。本發明實施例中,主播客戶端、觀眾客戶端可以實現包括集合群聊、視頻直播、頻道K歌、在線游戲、在線影視等多種功能。在圖1所示的直播網絡構架中,主播客戶端、觀眾客戶端可以運行在包括但不限于移動電話、移動電腦、平板電腦、個人數字助理(Personal Digital Assistant,PDA)、媒體播放器、智能電視、智能手表、智能眼鏡、智能手環等用戶設備上。
參見圖2,為本發明實施例提供的一種應用程序的心跳包控制方法,在本發明實施例中,所述方法包括:
S101、監測應用程序的運行狀態。
具體的,當啟動運行客戶端中的應用程序后,應用程序在客戶端中的運行狀態可以分為前臺運行狀態和后臺運行狀態。應用程序處于前臺運行狀態時,客戶端需要顯示應用程序的程序界面,此時占用較多的系統資源;應用程序處于后臺運行狀態時,客戶端不需要顯示應用程序的程序界面,此時占用較少的系統資源。客戶端監測應用程序的運行狀態的方法可以是,通過創建的監控線程來監測應用程序的運行狀態,或者由應用程序監測自身的運行狀態,當運行狀態發生變更時,發送系統廣播通知客戶端自身的運行狀態。當然也可以采用其他的方法監控應用程序的運行狀態,本發明不作限制。
其中,應用程序與網絡應用程序,用于和互聯網中的服務器進行通信,應用程序通過向服務器發送心跳檢測包,服務器接收心跳檢測包返回心跳響應包的形式來識別通信鏈路的網絡狀態。
S102、當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器。
具體的,根據S101監測的應用程序的運行狀態,當應用程序為前臺運行狀態時,客戶端指示應用程序采用第一時間間隔發送心跳檢測包至服務器。具體過程可以是:客戶端記錄應用程序發送的每個心跳檢測包的發送時刻和服務器返回的心跳響應包的接收時刻。當應用程序由后臺運行狀態切換到前臺運行狀態時,客戶端獲取應用程序的上一心跳檢測包的發送時刻t1,第一時間間隔為T1,客戶端指示應用程序在t1+T1時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第一時間間隔T1。
S103、當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。
具體的,根據S101監測到的應用程序的運行狀態,當應用程序為后臺運行狀態時,客戶端指示應用程序采用第二時間間隔發送心跳檢測包至服務器,第二時間間隔大于第一時間間隔。當應用程序為后臺應用程序時,由于不顯示程序界面,不向用戶提供網絡服務,因此對應用程序至服務器之間的通信鏈路的網絡狀態的要求不高,通過增加應用程序發送心跳檢測包的時間間隔的方式,可以減少客戶端的處理開銷。
具體過程可以是:客戶端記錄應用程序的發送的每個心跳檢測包的發送時 刻和服務器返回的心跳響應包的接收時刻。當應用程序由后臺運行狀態切換到前臺運行狀態時,客戶端獲取應用程序的上一心跳檢測包的發送時刻t2,第二時間間隔為T2,客戶端指示應用程序在t2+T2時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第二時間間隔。
實施本發明的實施例,監測應用程序的運行狀態,在不同的運行狀態指示應用程序以不同的時間間隔向服務器發送心跳檢測包,這樣可以自適應的調整應用程序發送心跳檢測包的時間間隔,能良好的匹配應用程序的網絡環境。
參見圖3,為本發明實施例提供的一種應用程序的心跳包的控制方法的另一流程示意圖,在本發明實施例中,所述方法包括:
S201、啟動運行應用程序。
具體的,應用程序安裝在客戶端上,啟動應用程序的方法可以是:用戶通過鍵盤、鼠標或觸摸屏等輸入設備啟動運行客戶端上安裝的應用程序。例如,客戶端的桌面界面有顯示有應用程序A的圖標,用戶點擊應用程序A的圖標,客戶端檢測到圖標上發生點擊事件后,啟動運行圖標對應的應用程序A。
S202、監測應用程序的運行狀態。
具體的,應用程序在客戶端中的運行狀態可以分為前臺運行狀態和后臺運行狀態。應用程序處于前臺運行狀態時,客戶端顯示應用程序的程序界面,用戶通過通過程序界面觸發應用程序的相應功能,此時應用程序需要占用較多的系統資源;應用程序處于后臺運行狀態時,客戶端不顯示應用程序的程序界面,此時占用較少的系統資源。客戶端監測應用程序的運行狀態的方法可以是:創建一個監控線程,通過監控線程檢測應用程序的主線程是否在位于進程表中,若為是,表明應用程序處于運行狀態,然后進一步判斷應用程序的UI(User Interface,用戶界面)進程是否位于進行表中,若為是,表明應用程序處于前臺運行狀態,若為否,表明應用程序處于后臺運行狀態。或者,應用程序在被啟動時,系統廣播攜表明帶應用程序處于前臺運行狀態的狀態標識符,客戶端通過狀態標識符得知應用程序處于前臺運行狀態;當應用程序從前臺運行狀態切換為后臺運行狀態時,系統廣播攜帶表明應用程序處于后臺運行狀態的狀態標識符,客戶端通過狀態標識符得知應用程序處于后臺運行狀態。例如,系統廣播中攜帶front_active的狀態標識符表明應用程序處于前臺運行狀態,系統廣播中攜帶behind_active的狀態標識符表明應用程序處于后臺運行狀態。
可選的,當系統的資源占用率大于占用率閾值時,獲取全部為后臺運行狀態的應用程序的優先級,以及關閉優先級小于優先級閾值的應用程序;其中,所述資源利用率包括CUP占用率和/或內存占用率。
具體的,客戶端監測系統的資源占用率,當資源利用率大于占用率閾值時,表明客戶端中可用的系統資源非常緊張,無法再啟動運行新的應用程序,此時客戶端獲取所有的處于后臺運行狀態的應用程序的優先級,將優先級小于優先級閾值的應用程序執行關閉操作。
示例性的,資源利用率為CPU占用率,占用率閾值為90%,客戶端檢測系統的資源利用率為91%,大于占用率閾值,客戶端獲取所有的處于后臺運行的應用程序為:應用程序1、應用程序2和應用程序3,客戶端中的應用程序的優先級劃分為3個等級,分別為1、2和3,數值越高表示優先級越高,應用程序的優先級可以由用戶根據需要設定的,也可以由系統自行設定,本發明不作限制。假設優先級閾值為2,則客戶端會關閉優先級小于2的應用程序,釋放該應用程序占用的系統資源。
S203、設置應用程序的心跳檢測包的發送時間間隔為第一時間間隔。
具體的,客戶端設置應用程序的心跳檢測包的發送時間間隔為第一時間間隔,客戶端指示應用程序采用第一時間間隔發送心跳檢測包至服務器。具體過程可以是:客戶端記錄應用程序發送的每個心跳檢測包的發送時刻和服務器返回的心跳響應包的接收時刻。客戶端獲取應用程序上一心跳檢測包的發送時刻為t1,第一時間間隔為T1,則客戶端指示應用程序在t1+T1時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第一時間間隔T1。
S204、指示所述應用程序在第一時刻向所述服務器發送當前心跳檢測包。
具體的,第一時刻和應用程序的上一心跳檢測包的發送時刻的時間間隔為第一時間間隔。應用程序在第一時刻向服務器發送心跳檢測包后,服務器會返回心跳檢測包對應的心跳響應包。
S205、預設時長內所述應用程序是否接收到所述服務器返回的心跳響應包。
具體的,以應用程序的心跳檢測包的發送時刻開始計時,在預設時長內應用程序是否接收到服務器返回的心跳響應包,其中預設時長小于第一時間間隔。若預設時長內應用程序接收到服務器返回的心跳響應包,執行S206,若預設時長內應用程序未接收到服務器返回的心跳響應包,執行S207。
示例性的,第一時間間隔為5s,預設時長為2s,應用程序在t時刻向服務器發送心跳檢測包,判斷應用程序在t+2s時刻之前是否接收服務器返回心跳響應包,若為是,執行S206,若為否,執行S207。
S206、指示所述應用程序在第二時刻發送下一心跳檢測包;其中,所述第二時刻至所述第一時刻的時間間隔大于所述第一時間間隔。
具體的,客戶端在預設時長內接收到服務器返回的心跳響應包,表明應用程序和服務器之間的網絡狀態良好,可以適當的增大應用程序的心跳檢測包的發送時間間隔,減輕客戶端的處理開銷。
示例性的,第一時間間隔為5s,第一時刻為t1,第二時刻為t1+6s,客戶端指示應用程序在t1+6s時刻發送下一心跳檢測包,第二時刻至第一時刻的時間間隔為6s,大于第一時間間隔5s。需要說明的是,增大的時間間隔的調整幅度本發明不作限制,可以根據需要進行設置。
S207、指示所述應用程序在第三時刻發送下一心跳檢測包;其中,所述第三時刻至所述第一時刻的時間間隔小于所述第一時間間隔。
具體的,客戶端在預設時長內未接收到服務器返回的心跳響應包,表明應用程序和服務器之間的網絡狀態惡劣,可以適當的減小應用程序的心跳檢測包的發送時間間隔,以期待及時的發現服務器是否斷開。
示例性的,第一時間間隔為5s,第一時刻為t1,第三時刻為t1+4s,客戶端指示應用程序在t1+4s時刻向服務器發送心跳檢測包,第三時刻至第一時刻的時間間隔為4s,小于第一時間間隔5s。需要說明的是,減小的時間間隔的幅度本發明不作限制,可以根據需要進行調整。
可以理解的是S205-S207是一個循環的執行流程,客戶端每發送一次心跳心跳檢測包判斷在預設時長內是否接收到服務器返回的心跳響應包,然后客戶端根據判斷結果增大或減小下一心跳檢測包和當前心跳檢測包的發送時間間隔,其中,每個調整的時間時間的幅度可以相同也可以不相同,也可以呈現等差趨勢,本發明不作限制。
S208、設置應用程序的心跳檢測包的發送時間間隔為第二時間間隔。
當應用程序為后臺運行狀態時,客戶端指示應用程序采用第二時間間隔發送心跳檢測包至服務器,第二時間間隔大于第一時間間隔。當應用程序為后臺應用程序時,由于不顯示程序界面,不向用戶提供網絡服務,因此對應用程序 至服務器之間的通信鏈路的網絡狀態的要求不高,通過增加應用程序發送心跳檢測包的時間間隔的方式,可以減少客戶端的處理開銷。
具體過程可以是:客戶端記錄應用程序的發送的每個心跳檢測包的發送時刻和服務器返回的心跳響應包的接收時刻。當應用程序由后臺運行狀態切換到前臺運行狀態時,客戶端獲取應用程序的上一心跳檢測包的發送時刻t2,第二時間間隔為T2,客戶端指示應用程序在t2+T2時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第二時間間隔。
S209、指示所述應用程序在第四時刻向所述服務器發送當前心跳檢測包。
具體的,第四時刻和應用程序的上一心跳檢測包的發送時刻的時間間隔為第二時間間隔。應用程序在第四時刻向服務器發送心跳檢測包后,服務器會返回心跳檢測包對應的心跳響應包。
S210、預設時長內所述應用程序是否接收到所述服務器返回心跳響應包。
具體的,以應用程序的心跳檢測包的發送時刻開始計時,在預設時長內應用程序是否接收到服務器返回的心跳檢測包,其中預設時長小于第二時間間隔。
示例性的,第四時間間隔為10s,預設時長為2s,應用程序在t時刻向服務器發送心跳檢測包,判斷應用程序在t+2s時刻之前是否接收服務器返回心跳響應包,若為是,執行S211,若為否,執行S212。
S211、指示所述應用程序在第五時刻發送下一心跳檢測包;其中,所述第五時刻至所述第四時刻的時間間隔大于所述第二時間間隔。
具體的,客戶端在預設時長內接收到服務器返回的心跳響應包,表明應用程序和服務器之間的網絡狀態良好,可以適當的增大應用程序的心跳檢測包的發送時間間隔,減輕客戶端的處理開銷。
示例性的,第二時間間隔為10s,第四時刻為t4,第五時刻為t4+11s,客戶端指示應用程序在t4+11s時刻發送下一心跳檢測包,第五時刻至第四時刻的時間間隔為11s,大于第二時間間隔10s。需要說明的是,增大的時間間隔的調整服務器本發明不作限制,可以根據需要進行設置。
S212、指示所述應用程序在第六時刻發送下一心跳檢測包;其中,所述第六時刻至第四時刻的時間間隔小于所述第二時間間隔。
具體的,客戶端在預設時長內未接收到服務器返回的心跳響應包,表明應用程序和服務器之間的網絡狀態惡劣,可以適當的減小應用程序的心跳檢測包 的發送時間間隔,以期待及時的發現服務器是否斷開。
示例性的,第二時間間隔為10s,第四時刻為t4,第六時刻為t4+9s,客戶端指示應用程序在t4+9s時刻向服務器發送心跳檢測包,第六時刻至第四時刻的時間間隔為9s,小于第一時間間隔10s。需要說明的是,減小的時間間隔的幅度本發明不作限制,可以根據需要進行調整。
可以理解的是S210-S212是一個循環的執行流程,客戶端每發送一次心跳心跳檢測包判斷在預設時長內是否接收到服務器返回的心跳響應包,然后客戶端根據判斷結果增大或減小下一心跳檢測包和當前心跳檢測包的發送時間間隔,其中,每個調整的時間時間的幅度可以相同也可以不相同,也可以呈現等差趨勢,本發明不作限制。
S213、統計所述服務器超時的次數。
具體的,統計應用程序處于前臺運行狀態和后臺運行狀態時,服務器超時是指,客戶端在向服務器發送心跳檢測包后,在預設時長內未接收到服務器返回的心跳響應包,統計服務器超時的次數。
S214、若所述次數大于次數閾值,獲取備用的多個服務器的網絡狀態參數,將網絡狀態參數最優的服務器作為目標服務器,且與所述目標服務器建立通信連接。
具體的,客戶端判斷服務超時的次數是否大于次數閾值,若為是,表明應用程序和客戶端之間的網絡狀態惡劣,無法正常為應用程序提供網絡服務,客戶端需要重新選擇備用的服務器進行連接。應用程序配置有多個備用的服務器,在當前服務器超時的次數大于次數閾值時,獲取多個備用的服務器的網絡狀態參數,網絡狀態參數包括帶寬、時延等,選擇網絡狀態參數最優的服務器作為目標服務器,與目標服務器從新建立連接。
實施本發明的實施例,監測應用程序的運行狀態,在不同的運行狀態指示應用程序以不同的時間間隔向服務器發送心跳檢測包,這樣可以自適應的調整應用程序發送心跳檢測包的時間間隔,提高客戶端的連接穩定性。
參見圖4,為本發明實施例提供的一種應用程序的心跳包控制裝置的結構示意圖,在本發明實施例中,所述裝置包括:監測模塊20、第一調整模塊21和第二調整模塊22。
監測模塊20,用于監測應用程序的運行狀態。
具體的,當啟動運行客戶端中的應用程序后,應用程序在客戶端中的運行狀態可以分為前臺運行狀態和后臺運行狀態。應用程序處于前臺運行狀態時,客戶端需要顯示應用程序的程序界面,此時占用較多的系統資源;應用程序處于后臺運行狀態時,客戶端不需要顯示應用程序的程序界面,此時占用較少的系統資源。檢測模塊20監測應用程序的運行狀態的方法可以是,通過創建的監控線程來監測應用程序的運行狀態,或者由應用程序監測自身的運行狀態,當運行狀態發生變更時,發送系統廣播通知客戶端自身的運行狀態。當然也可以采用其他的方法監控應用程序的運行狀態,本發明不作限制。
其中,應用程序與網絡應用程序,用于和互聯網中的服務器進行通信,應用程序通過向服務器發送心跳檢測包,服務器接收心跳檢測包返回心跳響應包的形式來識別通信鏈路的網絡狀態。
第一調整模塊21,用于當所述應用程序為前臺運行狀態時,指示所述應用程序采用第一時間間隔發送心跳檢測包至服務器。
具體的,第一調整模塊21根據監測模塊20監測的應用程序的運行狀態,當應用程序為前臺運行狀態時,第一調整模塊21指示應用程序采用第一時間間隔發送心跳檢測包至服務器。具體過程可以是:第一調整模塊21記錄應用程序發送的每個心跳檢測包的發送時刻和服務器返回的心跳響應包的接收時刻。當應用程序由后臺運行狀態切換到前臺運行狀態時,第一調整模塊21獲取應用程序的上一心跳檢測包的發送時刻t1,第一時間間隔為T1,第一調整模塊21指示應用程序在t1+T1時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第一時間間隔T1。
第二調整模塊22,用于當所述應用程序為后臺運行狀態時,指示所述應用程序采用第二時間間隔發送心跳檢測包至所述服務器;其中,所述第二時間間隔大于所述第一時間間隔。
具體的,第二調整模塊22根據監測模塊20監測到的應用程序的運行狀態,當應用程序為后臺運行狀態時,第二調整模塊22指示應用程序采用第二時間間隔發送心跳檢測包至服務器,第二時間間隔大于第一時間間隔。當應用程序為后臺應用程序時,由于不顯示程序界面,不向用戶提供網絡服務,因此對應用程序至服務器之間的通信鏈路的網絡狀態的要求不高,通過增加應用程序發送心跳檢測包的時間間隔的方式,可以減少客戶端的處理開銷。
具體過程可以是:第二調整模塊22記錄應用程序的發送的每個心跳檢測包的發送時刻和服務器返回的心跳響應包的接收時刻。當應用程序由后臺運行狀態切換到前臺運行狀態時,第二調整模塊22獲取應用程序的上一心跳檢測包的發送時刻t2,第二時間間隔為T2,第二調整模塊22指示應用程序在t2+T2時刻發送當前心跳檢測包,即當前心跳檢測包和上一心跳檢測包的時間間隔為第二時間間隔。
實施本發明的實施例,監測應用程序的運行狀態,在不同的運行狀態指示應用程序以不同的時間間隔向服務器發送心跳檢測包,這樣可以自適應的調整應用程序發送心跳檢測包的時間間隔,提高客戶端的連接穩定性。
參見圖5,為本發明實施例提供的一種應用程序的心跳包的控制裝置的另一結構示意圖,在本發明實施例中,所述裝置除包括檢測模塊20、第一調整模塊21和第二調整模塊22之外,還包括:統計模塊23、重連接模塊24和關閉模塊25。
統計模塊23,用于統計所述服務器超時的次數;其中,所述服務器超時表示所述應用程序在所述預設時長內未接收到所述服務器返回的心跳響應包。
重連接模塊24,用于若所述次數大于次數閾值時,獲取備用的多個服務器的網絡狀態參數,將網絡狀態參數最優的備用服務器作為目標服務器,且與所述目標服務器建立通信連接。
關閉模塊25,用于當系統的資源占用率大于占用率閾值時,獲取全部為后臺運行狀態的應用程序的優先級,以及關閉優先級小于優先級閾值的應用程序;其中,所述資源利用率包括CUP占用率和/或內存占用率。
可選的,第一調整模塊21還用于:
指示所述應用程序在第一時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回心跳響應包時,指示所述應用程序在第二時刻發送下一心跳檢測包;其中所述第二時刻至所述第一時刻的時間間隔大于所述第一時間間隔;
若預設時長內所述應用程序未接收到所述服務器返回的心跳響應包時,指示所述應用程序在第三時刻發送下一心跳檢測包;其中,所述第三時刻至所述第一時刻的時間間隔小于所述第一時間間隔。
可選的,第二調整模塊22還用于:
指示所述應用程序在第四時刻向所述服務器發送當前心跳檢測包;
若預設時長內所述應用程序接收到所述服務器返回的心跳響應包,指示所述應用程序在第五時刻發送下一心跳檢測包;其中,所述第五時刻至所述第三時刻的時間間隔大于所述第二時間間隔;
若所述預設時長內所述應用程序未接收到所述服務器返回的心跳響應包,指示所述應用程序在第六時刻發送下一心跳檢測包;其中,所述第六時刻至所述第四時刻的時間間隔小于所述第二時間間隔。
可選的,監測模塊20具體用于接收系統廣播,并根據所述系統廣播中攜帶的狀態標識符確定所述應用程序的運行狀態。
本發明實施例和方法實施例二基于同一構思,其帶來的技術效果也相同,具體原理請參照方法實施例二的描述,此處不再贅述。
本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發明一種較佳實施例而已,當然不能以此來限定本發明之權利范圍,本領域普通技術人員可以理解實現上述實施例的全部或部分流程,并依本發明權利要求所作的等同變化,仍屬于發明所涵蓋的范圍。

關 鍵 詞:
一種 應用程序 心跳 控制 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種應用程序的心跳包控制方法和裝置.pdf
鏈接地址:http://www.rgyfuv.icu/p-6353561.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图