應(yīng)用內(nèi)輕量級推送方法
【專利摘要】本發(fā)明公開了一種應(yīng)用內(nèi)輕量級推送方法,該方法通過在服務(wù)器端設(shè)置時間戳來實現(xiàn)客戶端周期性的發(fā)送連接請求,并且在服務(wù)器端和數(shù)據(jù)庫采用時間標(biāo)簽的機制來記錄數(shù)據(jù)發(fā)生更新的時間,通過時間的對比在服務(wù)器端的緩存表中只存放本次更新的數(shù)據(jù),緩存表中的數(shù)據(jù)若是有同一個用戶的不同類型的消息則通過打包機制把所有數(shù)據(jù)一次的推送到客戶端,推送后的緩存表則清空,能夠?qū)⒏碌臄?shù)據(jù)及時的推送到客戶端顯示給用戶,而且能夠在滿足用戶的需求的同時減少服務(wù)器端的數(shù)據(jù)處理開銷和內(nèi)存空間的開銷。
【專利說明】應(yīng)用內(nèi)輕量級推送方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于無線通信【技術(shù)領(lǐng)域】,具體涉及一種應(yīng)用內(nèi)輕量級推送方法的設(shè)計。
【背景技術(shù)】
[0002]由于HTTP在每次請求結(jié)束后都會主動釋放連接,要保持客戶端程序的在線狀態(tài),需要不斷地向服務(wù)器發(fā)起連接請求?,F(xiàn)有技術(shù)的通常做法是即使不需要獲得任何數(shù)據(jù),客戶端也保持每隔一段固定的時間向服務(wù)器發(fā)送一次“保持連接”的請求,服務(wù)器在收到該請求后對客戶端進行回復(fù),表明知道客戶端“在線”。若服務(wù)器長時間無法收到客戶端的請求,則認(rèn)為客戶端“下線”,若客戶端長時間無法收到服務(wù)器的回復(fù),則認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開。
[0003]這個連接請求是由客戶端主動發(fā)送的,但是客戶端并不清楚服務(wù)器端什么時候有數(shù)據(jù)的更新,再者上述通常做法中客戶端隔一段時間發(fā)連接請求,服務(wù)器端在沒有連接的情況下,即使有數(shù)據(jù)的更新也不能及時的推送。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中服務(wù)器無法主動和客戶端建立連接而導(dǎo)致的服務(wù)器數(shù)據(jù)推送不及時或者沒有連接而造成無法推送的問題提出了一種應(yīng)用內(nèi)輕量級推送方法。
[0005]本發(fā)明解決其技術(shù)問題采用的技術(shù)方案是:應(yīng)用內(nèi)輕量級推送方法,具體包括:
[0006]步驟1、客戶端向服務(wù)器發(fā)送HTTP連接請求和用戶標(biāo)識信息,服務(wù)器收到該請求后,啟動在服務(wù)器端的時間戳開始倒計時,所述時間戳的時間長度為預(yù)設(shè)周期T,當(dāng)時間戳倒計時剩余時間等于預(yù)設(shè)時間t時,服務(wù)器主動向客戶端發(fā)送一個信號,客戶端收到該信號后立即向服務(wù)器再次發(fā)送HTTP連接請求,建立連接;
[0007]步驟2、當(dāng)所述步驟SI中客戶端向服務(wù)器再次發(fā)送HTTP連接請求成功建立連接后,服務(wù)器處理收到的攜帶用戶標(biāo)識信息的消息,獲得客戶端該應(yīng)用對應(yīng)的用戶標(biāo)識信息;
[0008]如果所述用戶標(biāo)識信息對應(yīng)的用戶有數(shù)據(jù)的更新,服務(wù)器利用已建立的連接把更新的數(shù)據(jù)推送給相應(yīng)的客戶端用戶,并且記錄推送時間;如果沒有數(shù)據(jù)的更新,服務(wù)器向相應(yīng)的客戶端用戶發(fā)送一條空消息并記錄發(fā)送時間,然后保持連接到有數(shù)據(jù)更新或者連接時間超時斷開連接;
[0009]步驟3、客戶端和服務(wù)器之間的連接斷開時,與服務(wù)器對應(yīng)的數(shù)據(jù)庫將數(shù)據(jù)庫中更新的數(shù)據(jù)放到服務(wù)器的緩存表中,在下次用戶打開應(yīng)用,客戶端與服務(wù)器之間成功建立連接時,服務(wù)器把緩存表中的數(shù)據(jù)推送到客戶端。
[0010]進一步的,所述客戶端對應(yīng)的每個應(yīng)用都有一個應(yīng)用表格,用于存放用戶名和其對應(yīng)的ID,如果客戶端用戶是第一次使用該應(yīng)用,則需要注冊獲得一個ID,所述ID用于作為用戶標(biāo)識信息,并把ID號對應(yīng)的用戶名存放在該應(yīng)用的應(yīng)用表格中;如果不是第一次使用該應(yīng)用,則在該應(yīng)用的應(yīng)用表格中存在該用戶的用戶名及其對應(yīng)的ID號。[0011]進一步的,所述步驟2中,服務(wù)器向客戶端推送的數(shù)據(jù)是根據(jù)上次推送時間進行的增量推送,具體為:服務(wù)器采用時間標(biāo)簽對數(shù)據(jù)庫中的數(shù)據(jù)進行時間更新的記錄,時間標(biāo)簽的更新隨數(shù)據(jù)庫中數(shù)據(jù)更新而更新,服務(wù)器將上一次推送數(shù)據(jù)的時間和數(shù)據(jù)庫中數(shù)據(jù)的更新時間作對比,然后取出數(shù)據(jù)庫中更新的信息推送到客戶端并記錄本次推送數(shù)據(jù)的時間。
[0012]進一步的,所述服務(wù)器端采用緩存表來存放不同用戶對應(yīng)的不同類型的所有更新信息,所述緩存表中包括消息類型和本類型消息的推送時間,并且在數(shù)據(jù)庫中存在對應(yīng)的更新表,所述更新表中包括消息類型和消息更新時間。
[0013]更進一步的,在服務(wù)器推送完數(shù)據(jù)后,服務(wù)器將自動檢測緩存表中的數(shù)據(jù)是否有新的更新數(shù)據(jù)沒有推送,如果所有數(shù)據(jù)都已經(jīng)推送,則清除緩存表中的數(shù)據(jù),否則把緩存表中的數(shù)據(jù)全部推送后清除緩存表。
[0014]本發(fā)明的有益效果是:本發(fā)明一種應(yīng)用內(nèi)輕量級推送方法通過在服務(wù)器端設(shè)置時間戳來實現(xiàn)客戶端周期性的發(fā)送連接請求,避免了數(shù)據(jù)更新不及時和無法推送數(shù)據(jù);并且在服務(wù)器端和數(shù)據(jù)庫采用時間標(biāo)簽的機制,通過時間的對比在服務(wù)器端的緩存表中只存放本次更新的數(shù)據(jù),緩存表中的數(shù)據(jù)若是有同一個用戶的不同類型的消息則通過打包機制把所有數(shù)據(jù)一次的推送到客戶端,推送后的緩存表則清空,能夠?qū)⒏碌臄?shù)據(jù)及時的推送到客戶端,顯示給用戶,而且能夠在滿足用戶的需求的同時減少服務(wù)器端的數(shù)據(jù)處理開銷和內(nèi)存空間的開銷。
【專利附圖】
【附圖說明】
[0015]圖1所示為本發(fā)明【具體實施方式】的應(yīng)用內(nèi)輕量級推送方法的流程框圖;
[0016]圖2所示為本發(fā)明【具體實施方式】具體事例的流程框圖。
【具體實施方式】
[0017]下面結(jié)合附圖和具體的實施例對本發(fā)明作進一步的闡述。
[0018]如圖1所示為本發(fā)明實施方式的應(yīng)用內(nèi)輕量級推送方法的流程框圖,其具體包括:
[0019]步驟1、客戶端向服務(wù)器發(fā)送HTTP連接請求和用戶標(biāo)識信息,服務(wù)器收到該請求后,啟動在服務(wù)器端的時間戳開始倒計時,所述時間戳的時間長度為預(yù)設(shè)周期T,當(dāng)時間戳倒計時剩余時間等于預(yù)設(shè)時間t時,服務(wù)器主動向客戶端發(fā)送一個信號,客戶端收到該信號后立即向服務(wù)器再次發(fā)送HTTP連接請求,建立連接;
[0020]所述步驟I具體為,首先客戶端與服務(wù)器之間周期性建立HTTP連接,所述周期性可根據(jù)具體的環(huán)境、用戶的需求等條件確定,所述周期可以預(yù)設(shè)為T,當(dāng)用戶打開并登錄到客戶端的應(yīng)用,如果是第一次使用該應(yīng)用,則需要注冊獲得一個ID,所述ID用于作為用戶標(biāo)識信息,并把ID號對應(yīng)的用戶名存放在該應(yīng)用的應(yīng)用表格中,應(yīng)用表格包括用戶名和其對應(yīng)的ID號,用戶在該應(yīng)用注冊獲得ID號后,系統(tǒng)根據(jù)一定的規(guī)則把用戶名和對應(yīng)的ID號放到應(yīng)用中的表格;如果不是第一次使用該應(yīng)用,則在應(yīng)用的表格會有用戶名及其對應(yīng)的ID號的記錄??蛻舳双@取用戶信息后,向服務(wù)器發(fā)送HTTP連接請求和用戶標(biāo)識等信息,服務(wù)器收到該請求后,啟動在服務(wù)器端的時間戳開始倒計時,所述時間戳的時間長度為預(yù)設(shè)周期T,當(dāng)時間戳倒計時剩余時間等于預(yù)設(shè)時間t時,該t可以設(shè)為幾秒,具體值可以根據(jù)不同需求進行設(shè)定,服務(wù)器主動向客戶端發(fā)送一個信號,客戶端收到該信號后立即向服務(wù)器端再次發(fā)送HTTP連接請求,建立連接。
[0021]步驟2、當(dāng)所述步驟SI中客戶端向服務(wù)器再次發(fā)送HTTP連接請求成功建立連接后,服務(wù)器處理收到的攜帶用戶標(biāo)識信息的消息,獲得客戶端該應(yīng)用對應(yīng)的用戶標(biāo)識信息;
[0022]如果所述用戶標(biāo)識信息對應(yīng)的用戶有數(shù)據(jù)的更新,服務(wù)器利用已建立的連接把更新的數(shù)據(jù)推送給相應(yīng)的客戶端用戶,并且記錄推送時間;如果沒有數(shù)據(jù)的更新,服務(wù)器向相應(yīng)的客戶端用戶發(fā)送一條空消息并記錄發(fā)送時間,然后保持連接到有數(shù)據(jù)更新或者連接時間超時斷開連接。
[0023]其中,服務(wù)器向客戶端推送的數(shù)據(jù)是根據(jù)上次推送時間進行的增量推送,具體為:服務(wù)器采用時間標(biāo)簽對數(shù)據(jù)庫中的數(shù)據(jù)進行時間更新的記錄,時間標(biāo)簽的更新隨數(shù)據(jù)庫中數(shù)據(jù)發(fā)生更新而更新,服務(wù)器將上一次推送數(shù)據(jù)的時間和數(shù)據(jù)庫中數(shù)據(jù)的更新時間作對t匕,然后取出數(shù)據(jù)庫中更新的信息推送到客戶端并記錄本次推送數(shù)據(jù)的時間。
[0024]所述服務(wù)器端采用緩存表來存放不同用戶對應(yīng)的不同類型的所有更新信息,所述緩存表中包括消息類型和本類型消息的推送時間,并且在數(shù)據(jù)庫中存在對應(yīng)的更新表,所述更新表中包括消息類型和消息更新時間;其中緩存表和更新表之間的消息類型是對應(yīng)的,隨著數(shù)據(jù)的不斷更新,更新表中消息更新時間會對應(yīng)發(fā)生更新,同樣,緩存表中的推送時間也會不斷的更新。對于同一個用戶來說,緩存表中如果有更新的不同類型的消息或者是不止一條同一類型的消息的數(shù)據(jù),服務(wù)器則把緩存表中的所有數(shù)據(jù)打包一起發(fā)送到對應(yīng)的客戶端用戶,客戶端收到打包的消息后,通過解壓機制把不同類型的消息提取出來。
[0025]在每次服務(wù)器推送完數(shù)據(jù)后,服務(wù)器會自動檢測緩存表中的數(shù)據(jù)是否有新的更新數(shù)據(jù)沒有推送,如果所有數(shù)據(jù)都已經(jīng)推送則清除緩存表中的數(shù)據(jù),否則把緩存表中的數(shù)據(jù)全部推送后清除緩存表以節(jié)約服務(wù)器的開銷和空間。
[0026]步驟3、客戶端和服務(wù)器之間的連接斷開時,與服務(wù)器對應(yīng)的數(shù)據(jù)庫將數(shù)據(jù)庫中更新的數(shù)據(jù)放到服務(wù)器的緩存表中,在下次用戶打開應(yīng)用,客戶端與服務(wù)器之間成功建立連接時,服務(wù)器把緩存表中的數(shù)據(jù)推送到客戶端,從而實現(xiàn)應(yīng)用內(nèi)輕量級的推送。
[0027]為了本領(lǐng)域技術(shù)人員能夠理解并且實施本發(fā)明技術(shù)方案,下面通過一個具體的實施例子對本發(fā)明應(yīng)用內(nèi)輕量級推送方法做進一步的闡述。
[0028]如圖2所示為本發(fā)明實施例的具體流程框圖,用戶張三使用應(yīng)用A:用戶張三是第一次使用這個應(yīng)用A,需要注冊獲得一個ID號,這個ID號是唯一的,用戶張三注冊后獲得ID號為03,把用戶張三和其ID —起加入到應(yīng)用A的應(yīng)用表格中,其中03就是用戶張三在使用應(yīng)用A的用戶標(biāo)識。如果不是第一次使用則在應(yīng)用A的表中會有用戶ID的記錄。如表1所示,在應(yīng)用A的應(yīng)用表格中就有用戶李四,用戶王五的相關(guān)記錄。
[0029]表1-應(yīng)用A的應(yīng)用表格
[0030]
【權(quán)利要求】
1.應(yīng)用內(nèi)輕量級推送方法,其特征在于,具體包括: 步驟1、客戶端向服務(wù)器發(fā)送HTTP連接請求和用戶標(biāo)識信息,服務(wù)器收到該請求后,啟動在服務(wù)器端的時間戳開始倒計時,所述時間戳的時間長度為預(yù)設(shè)周期T,當(dāng)時間戳倒計時剩余時間等于預(yù)設(shè)時間t時,服務(wù)器主動向客戶端發(fā)送一個信號,客戶端收到該信號后立即向服務(wù)器再次發(fā)送HTTP連接請求,建立連接; 步驟2、當(dāng)所述步驟SI中客戶端向服務(wù)器再次發(fā)送HTTP連接請求成功建立連接后,月艮務(wù)器處理收到的攜帶用戶標(biāo)識信息的消息,獲得客戶端該應(yīng)用對應(yīng)的用戶標(biāo)識信息; 如果所述用戶標(biāo)識信息對應(yīng)的用戶有數(shù)據(jù)的更新,服務(wù)器利用已建立的連接把更新的數(shù)據(jù)推送給相應(yīng)的客戶端用戶,并且記錄推送時間;如果沒有數(shù)據(jù)的更新,服務(wù)器向相應(yīng)的客戶端用戶發(fā)送一條空消息并記錄發(fā)送時間,然后保持連接到有數(shù)據(jù)更新或者連接時間超時斷開連接; 步驟3、客戶端和服務(wù)器之間的連接斷開時,與服務(wù)器對應(yīng)的數(shù)據(jù)庫將數(shù)據(jù)庫中更新的數(shù)據(jù)放到服務(wù)器的緩存表中,在下次用戶打開應(yīng)用,客戶端與服務(wù)器之間成功建立連接時,服務(wù)器把緩存表中的數(shù)據(jù)推送到客戶端。
2.如權(quán)利要求1所述的方法,其特征在于,所述客戶端對應(yīng)的每個應(yīng)用都有一個應(yīng)用表格,用于存放用戶名和其對應(yīng)的ID,如果客戶端用戶是第一次使用該應(yīng)用,則需要注冊獲得一個ID,所述ID用于作為用戶標(biāo)識信息,并把ID號對應(yīng)的用戶名存放在該應(yīng)用的應(yīng)用表格中;如果不是第一次使用該應(yīng)用,則在該應(yīng)用的應(yīng)用表格中存在該用戶的用戶名及其對應(yīng)的ID號。
3.如權(quán)利要求1所述的方法,其特征在于,所述步驟2中,服務(wù)器向客戶端推送的數(shù)據(jù)是根據(jù)上次推送時間進行的增量推送,具體為:服務(wù)器采用時間標(biāo)簽對數(shù)據(jù)庫中的數(shù)據(jù)進行時間更新的記錄,時間標(biāo)簽的更新隨數(shù)據(jù)庫中數(shù)據(jù)更新而更新,服務(wù)器將上一次推送數(shù)據(jù)的時間和數(shù)據(jù)庫中數(shù)據(jù)的更新時間作對比,然后取出數(shù)據(jù)庫中更新的信息推送到客戶端并記錄本次推送數(shù)據(jù)的時間。
4.如權(quán)利要求1所述的方法,其特征在于,所述服務(wù)器端采用緩存表來存放不同用戶對應(yīng)的不同類型的所有更新信息,所述緩存表中包括消息類型和本類型消息的推送時間,并且在數(shù)據(jù)庫中存在對應(yīng)的更新表,所述更新表中包括消息類型和消息更新時間。
5.如權(quán)利要求4所述的方法,其特征在于,在服務(wù)器推送完數(shù)據(jù)后,服務(wù)器將自動檢測緩存表中的數(shù)據(jù)是否有新的更新數(shù)據(jù)沒有推送,如果所有數(shù)據(jù)都已經(jīng)推送,則清除緩存表中的數(shù)據(jù),否則把緩存表中的數(shù)據(jù)全部推送后清除緩存表。
【文檔編號】H04L29/06GK103780603SQ201310750165
【公開日】2014年5月7日 申請日期:2013年12月31日 優(yōu)先權(quán)日:2013年12月31日
【發(fā)明者】李龍江, 劉社平, 李永剛 申請人:電子科技大學(xué)