一種基于web的反向數(shù)據(jù)交互方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于web的反向數(shù)據(jù)交互方法,包括以下步驟:1.判斷客戶端瀏覽器類(lèi)型是否支持web socket;2.如支持web socket,則啟用web socket方式進(jìn)行數(shù)據(jù)交互;3.如不支持web socket,則啟用長(zhǎng)連接方式進(jìn)行數(shù)據(jù)交互。本發(fā)明通過(guò)結(jié)合三種數(shù)據(jù)交互方法,確保服務(wù)器與客戶端之間通過(guò)最有效的方式進(jìn)行數(shù)據(jù)交互,使客戶端向服務(wù)器的業(yè)務(wù)請(qǐng)求命中率提升到100%,并使用心跳機(jī)制使服務(wù)器的消耗降到最低,極大的提升了服務(wù)器的處理量。
【專(zhuān)利說(shuō)明】
—種基于web的反向數(shù)據(jù)交互方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及互聯(lián)網(wǎng)數(shù)據(jù)交互技術(shù),具體涉及一種基于web的反向數(shù)據(jù)交互方法。
【背景技術(shù)】
[0002]目前互聯(lián)網(wǎng)中的數(shù)據(jù)交互,主要有三種方式。
[0003]第一種是Ajax定期請(qǐng)求方式,這種方式嚴(yán)格來(lái)說(shuō)并不算是服務(wù)器推送,而是客戶端在一個(gè)比較短的間隔內(nèi)定期去服務(wù)器用Ajax請(qǐng)求信息,如果服務(wù)器端有了新的事件,則客戶端在下一次請(qǐng)求就會(huì)獲取到,并在客戶端調(diào)用對(duì)應(yīng)的回調(diào)函數(shù)來(lái)處理這些信息。傳統(tǒng)的Ajax輪詢(xún)交互,服務(wù)器并不會(huì)每次都有數(shù)據(jù)可以處理并返回,導(dǎo)致大量的空查詢(xún),從而嚴(yán)重的浪費(fèi)了服務(wù)器資源和帶寬資源。
[0004]長(zhǎng)連接是另一種方式,是對(duì)于頁(yè)面掛起一個(gè)額外的Ajax請(qǐng)求,當(dāng)服務(wù)器有事件發(fā)生時(shí),將請(qǐng)求返回給客戶端,并在此掛起一個(gè)長(zhǎng)連接。不過(guò)長(zhǎng)連接多用于操作頻繁,點(diǎn)對(duì)點(diǎn)的通訊,而且連接數(shù)不能太多情況,適用范圍有限。
[0005]第三種是Web Socket,ffeb Socket是HTML5開(kāi)始提供的一種客戶端瀏覽器與服務(wù)器間進(jìn)行全雙工通訊的網(wǎng)絡(luò)技術(shù)。在Web Socket API中,瀏覽器和服務(wù)器只需要做一個(gè)握手的動(dòng)作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就直接可以數(shù)據(jù)互相傳送。Web Socket協(xié)議的出現(xiàn)可以避免上述兩種方式帶來(lái)的服務(wù)器資源占用和寬帶占用,但缺點(diǎn)也是很明顯的,對(duì)客戶端和服務(wù)器都有一定要求,包括瀏覽器的版本和服務(wù)器的版本。由于中國(guó)瀏覽器市場(chǎng)復(fù)雜,HTML5沒(méi)有完成普及,所以web socket在很多情況下沒(méi)法直接使用。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供一種基于web的反向數(shù)據(jù)交互方法,能讓服務(wù)器及時(shí)向客戶端推送消息,并減少網(wǎng)絡(luò)請(qǐng)求,提供命中率。
[0007]本發(fā)明解決技術(shù)問(wèn)題采用的技術(shù)方案是:
[0008]—種基于web的反向數(shù)據(jù)交互方法,包括以下步驟:
[0009]1.判斷客戶端瀏覽器類(lèi)型是否支持web socket ;
[0010]2.如支持web socket,則啟用web socket方式進(jìn)行數(shù)據(jù)交互;
[0011]3.如不支持web socket,則啟用長(zhǎng)連接方式進(jìn)行數(shù)據(jù)交互。
[0012]進(jìn)一步地,所述步驟3中,長(zhǎng)連接方式包括:在客戶端瀏覽器中運(yùn)行Ajax心跳程序,周期性向服務(wù)器心跳接收程序發(fā)送請(qǐng)求。
[0013]進(jìn)一步地,所述步驟3中,服務(wù)器接收程序收到請(qǐng)求后,處理查詢(xún),如果有查詢(xún)結(jié)果,返回結(jié)果標(biāo)識(shí),如果沒(méi)有查詢(xún)則鎖定請(qǐng)求30秒,一段時(shí)間之后再次處理該請(qǐng)求,如果還是沒(méi)有,則返回?zé)o結(jié)果標(biāo)識(shí),Ajax心跳程序再次開(kāi)始周期請(qǐng)求。
[0014]進(jìn)一步地,所述步驟3中,如果有查詢(xún)則啟動(dòng)客戶端數(shù)據(jù)交互程序向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求。
[0015]進(jìn)一步地,所述步驟3中,如果服務(wù)器有客戶端信息,服務(wù)器加上消息交互程序標(biāo)識(shí),客戶端根據(jù)交互程序標(biāo)識(shí),選擇相應(yīng)的交互程序與服務(wù)段單獨(dú)通訊,服務(wù)器業(yè)務(wù)服務(wù)提供程序接收到客戶端交互程序的請(qǐng)求。
[0016]進(jìn)一步地,所述步驟3中,服務(wù)器業(yè)務(wù)服務(wù)提供程序處理客戶端交互程序請(qǐng)求,返回處理結(jié)果;客戶端接收并解析服務(wù)器業(yè)務(wù)提供程序返回的結(jié)果,在瀏覽器中展示。
[0017]進(jìn)一步地,所述步驟3中,在客戶端沒(méi)有向服務(wù)器發(fā)送消息時(shí),緩存客戶端的消息,以備客戶端查詢(xún),在服務(wù)器沒(méi)有客戶端消息時(shí),返回特定標(biāo)識(shí),讓客戶端延長(zhǎng)等待時(shí)間。
[0018]本發(fā)明通過(guò)結(jié)合三種數(shù)據(jù)交互方法,確保服務(wù)器與客戶端之間通過(guò)最有效的方式進(jìn)行數(shù)據(jù)交互,使客戶端向服務(wù)器的業(yè)務(wù)請(qǐng)求命中率提升到100%,并使用心跳機(jī)制使服務(wù)器的消耗降到最低,極大的提升了服務(wù)器的處理量。
【附圖說(shuō)明】
[0019]圖1是本發(fā)明所述一種基于web的反向數(shù)據(jù)交互方法的流程圖。
【具體實(shí)施方式】
[0020]如圖1所示,一種基于web的反向數(shù)據(jù)交互方法,包括以下步驟:
[0021]1.判斷客戶端瀏覽器類(lèi)型是否支持web socket ;
[0022]2.如支持web socket,則啟用web socket方式進(jìn)行數(shù)據(jù)交互;
[0023]3。如不支持web socket,則啟用長(zhǎng)連接方式進(jìn)行數(shù)據(jù)交互。
[0024]先對(duì)瀏覽器的類(lèi)型進(jìn)行判斷,有利于服務(wù)器與瀏覽器之間選擇最優(yōu)方式進(jìn)行數(shù)據(jù)交互,現(xiàn)有技術(shù)中,一般不會(huì)對(duì)瀏覽器類(lèi)型進(jìn)行判斷,而使用Ajax定期請(qǐng)求方式、長(zhǎng)連接和web socket三種方式中的一種,一則造成服務(wù)器資源浪費(fèi),二則失去了選擇最優(yōu)數(shù)據(jù)交互方式的機(jī)會(huì),使得用戶體驗(yàn)變差。
[0025]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,長(zhǎng)連接方式包括:在客戶端瀏覽器中運(yùn)行Ajax心跳程序,周期性向服務(wù)器心跳接收程序發(fā)送請(qǐng)求。
[0026]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,服務(wù)器接收程序收到請(qǐng)求后,處理查詢(xún),如果有查詢(xún)結(jié)果,返回結(jié)果標(biāo)識(shí),如果沒(méi)有查詢(xún)則鎖定請(qǐng)求一段時(shí)間,一段時(shí)間之后再次處理該請(qǐng)求,如果還是沒(méi)有,則返回?zé)o結(jié)果標(biāo)識(shí),Ajax心跳程序再次開(kāi)始周期請(qǐng)求。
[0027]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,如果有查詢(xún)則啟動(dòng)客戶端數(shù)據(jù)交互程序向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求。
[0028]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,如果服務(wù)器有客戶端信息,服務(wù)器加上消息交互程序標(biāo)識(shí),客戶端根據(jù)交互程序標(biāo)識(shí),選擇相應(yīng)的交互程序與服務(wù)段單獨(dú)通訊,服務(wù)器業(yè)務(wù)服務(wù)提供程序接收到客戶端交互程序的請(qǐng)求。
[0029]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,服務(wù)器業(yè)務(wù)服務(wù)提供程序處理客戶端交互程序請(qǐng)求,返回處理結(jié)果;客戶端接收并解析服務(wù)器業(yè)務(wù)提供程序返回的結(jié)果,在瀏覽器中展示。
[0030]作為本發(fā)明的進(jìn)一步實(shí)施方式,所述步驟3中,在客戶端沒(méi)有向服務(wù)器發(fā)送消息時(shí),緩存客戶端的消息,以備客戶端查詢(xún),在服務(wù)器沒(méi)有客戶端消息時(shí),返回特定標(biāo)識(shí),讓客戶端延長(zhǎng)等待時(shí)間。
[0031]實(shí)施例
[0032]一種基于web的反向數(shù)據(jù)交互方法,包括以下步驟:
[0033]1.判斷客戶端瀏覽器類(lèi)型是否支持web socket ;
[0034]2.如支持web socket,則啟用web socket方式進(jìn)行數(shù)據(jù)交互;
[0035]3如不支持web socket,則啟用長(zhǎng)連接方式進(jìn)行數(shù)據(jù)交互。
[0036]在步驟3中,具體包括:
[0037](I)客戶端定時(shí)向服務(wù)器發(fā)送Ajax心跳包;
[0038](2)服務(wù)器接受到心跳包后,查找該客戶端的信息;
[0039](3)如果沒(méi)有客戶端信息,等待30秒后返回;
[0040](4)如果服務(wù)器有客戶端信息,服務(wù)器加上消息交互程序標(biāo)識(shí);
[0041](5)客戶端根據(jù)交互程序標(biāo)識(shí),選擇相應(yīng)的交互程序與服務(wù)段單獨(dú)通訊;
[0042](6)服務(wù)器業(yè)務(wù)服務(wù)提供程序接收到客戶端交互程序的請(qǐng)求;
[0043](7)服務(wù)器業(yè)務(wù)服務(wù)提供程序處理客戶端交互程序請(qǐng)求,返回處理結(jié)果;
[0044](8)客戶端接收并解析服務(wù)器業(yè)務(wù)提供程序返回的結(jié)果,在瀏覽器中展示;
[0045](9)在客戶端沒(méi)有向服務(wù)器發(fā)送消息時(shí),緩存客戶端的消息,以備客戶端查詢(xún);
[0046](10)在服務(wù)器沒(méi)有客戶端消息時(shí),返回特定標(biāo)識(shí),讓客戶端延長(zhǎng)等待時(shí)間。
[0047]本發(fā)明通過(guò)結(jié)合三種數(shù)據(jù)交互方法,確保服務(wù)器與客戶端之間通過(guò)最有效的方式進(jìn)行數(shù)據(jù)交互,使客戶端向服務(wù)器的業(yè)務(wù)請(qǐng)求命中率提升到100%,并使用心跳機(jī)制使服務(wù)器的消耗降到最低,極大的提升了服務(wù)器的處理量。
[0048]以上實(shí)施方式和實(shí)施例僅用于進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案,并不對(duì)本發(fā)明的保護(hù)范圍進(jìn)行任何限制,本領(lǐng)域普通技術(shù)人員在不通過(guò)創(chuàng)造性勞動(dòng)下所做的變形和潤(rùn)飾,均應(yīng)屬于本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種基于web的反向數(shù)據(jù)交互方法,其特征在于,包括以下步驟: 1.判斷客戶端瀏覽器類(lèi)型是否支持websocket ;2.如支持websocket,則啟用web socket方式進(jìn)行數(shù)據(jù)交互;3.如不支持websocket,則啟用長(zhǎng)連接方式進(jìn)行數(shù)據(jù)交互。 2.根據(jù)權(quán)利要求1所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,步驟3中,長(zhǎng)連接方式包括:在客戶端瀏覽器中運(yùn)行Ajax心跳程序,周期性向服務(wù)器心跳接收程序發(fā)送請(qǐng)求。 3.根據(jù)權(quán)利要求2所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,所述步驟3中,服務(wù)器接收程序收到請(qǐng)求后,處理查詢(xún),如果有查詢(xún)結(jié)果,返回結(jié)果標(biāo)識(shí),如果沒(méi)有查詢(xún)則鎖定請(qǐng)求一段時(shí)間,一段時(shí)間之后再次處理該請(qǐng)求,如果還是沒(méi)有,則返回?zé)o結(jié)果標(biāo)識(shí),Ajax心跳程序再次開(kāi)始周期請(qǐng)求。4.根據(jù)權(quán)利要求3所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,所述步驟3中,如果有查詢(xún)則啟動(dòng)客戶端數(shù)據(jù)交互程序向服務(wù)器發(fā)送數(shù)據(jù)交互請(qǐng)求。5.根據(jù)權(quán)利要求4所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,所述步驟3中,如果服務(wù)器有客戶端信息,服務(wù)器加上消息交互程序標(biāo)識(shí),客戶端根據(jù)交互程序標(biāo)識(shí),選擇相應(yīng)的交互程序與服務(wù)段單獨(dú)通訊,服務(wù)器業(yè)務(wù)服務(wù)提供程序接收到客戶端交互程序的請(qǐng)求。6.根據(jù)權(quán)利要求5所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,所述步驟3中,服務(wù)器業(yè)務(wù)服務(wù)提供程序處理客戶端交互程序請(qǐng)求,返回處理結(jié)果;客戶端接收并解析服務(wù)器業(yè)務(wù)提供程序返回的結(jié)果,在瀏覽器中展示。7.根據(jù)權(quán)利要求6所述一種基于web的反向數(shù)據(jù)交互方法,其特征在于,所述步驟3中,在客戶端沒(méi)有向服務(wù)器發(fā)送消息時(shí),緩存客戶端的消息,以備客戶端查詢(xún),在服務(wù)器沒(méi)有客戶端消息時(shí),返回特定標(biāo)識(shí),讓客戶端延長(zhǎng)等待時(shí)間。
【文檔編號(hào)】H04L29/08GK105897790SQ201410657725
【公開(kāi)日】2016年8月24日
【申請(qǐng)日】2014年11月19日
【發(fā)明人】吳沉立
【申請(qǐng)人】吳沉立