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