斷線重連方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種斷線重連方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)應(yīng)用中,客戶端與服務(wù)端建立網(wǎng)絡(luò)連接,并通過(guò)該連接進(jìn)行數(shù)據(jù)交互。目前,TCP協(xié)議已經(jīng)能夠較好的保證數(shù)據(jù)有序和數(shù)據(jù)到達(dá),但在這個(gè)過(guò)程中,由于網(wǎng)絡(luò)環(huán)境的復(fù)雜性和不確定性,TCP連接還是會(huì)斷開(kāi),從而導(dǎo)致發(fā)送端已發(fā)送數(shù)據(jù)但接收端未接收到數(shù)據(jù)的情況出現(xiàn),造成數(shù)據(jù)丟失。如果客戶端想要繼續(xù)獲得服務(wù),就必須重新連接至服務(wù)端。
[0003]在連接斷開(kāi)的情況下,現(xiàn)有技術(shù)中的客戶端一般有兩種處理方式:第一種方式是客戶端的顯示界面回退到初始界面(比如登錄界面),并提示用戶網(wǎng)絡(luò)連接已經(jīng)斷開(kāi),然后等待用戶手動(dòng)進(jìn)行連接操作,以重新建立客戶端與服務(wù)器之間的連接;第二種方式是保留客戶端的顯示界面,鎖定用戶當(dāng)前狀態(tài)和操作界面,并在后臺(tái)進(jìn)行網(wǎng)絡(luò)重連的操作,在重連成功之后,客戶端應(yīng)用即恢復(fù)到正常狀態(tài)。
【發(fā)明內(nèi)容】
[0004]【背景技術(shù)】中提到的兩種重連方式雖然能夠?qū)崿F(xiàn)客戶端與服務(wù)器之間的斷線重連,但是這兩種重連方式在網(wǎng)絡(luò)連接斷開(kāi)期間和斷開(kāi)前的一小段期間內(nèi),可能會(huì)導(dǎo)致一部分傳輸數(shù)據(jù)的丟失,造成用戶操作或行為的中斷,而且,重連與初始連接相同,在連接成功之后,依舊會(huì)傳輸大量的初始化信息,造成大量流量的浪費(fèi)。
[0005]本發(fā)明實(shí)施例的多個(gè)方面提出一種斷線重連方法、裝置及系統(tǒng),能夠有效提高斷線重連的效率。
[0006]本發(fā)明實(shí)施例的一個(gè)方面提供一種斷線重連方法,包括:
[0007]在與客戶端建立的連接斷開(kāi)后,接收所述客戶端發(fā)送的重連請(qǐng)求;其中,所述重連請(qǐng)求包括客戶端緩存中的最小緩存編號(hào)和數(shù)據(jù)編號(hào)集合中的最大數(shù)據(jù)編號(hào);所述客戶端緩存中存儲(chǔ)有所述客戶端已發(fā)送的數(shù)據(jù)及緩存編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述緩存編號(hào)是所述客戶端按照遞增順序?qū)λ隹蛻舳税l(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述數(shù)據(jù)編號(hào)集合包含所述客戶端接收到的數(shù)據(jù)所對(duì)應(yīng)的編號(hào);
[0008]在檢測(cè)到本地緩存中具有所述最大數(shù)據(jù)編號(hào),且接收編號(hào)集合中具有所述最小緩存編號(hào)時(shí),向所述客戶端發(fā)送檢測(cè)成功信息,并重新建立與所述客戶端的連接;其中,所述本地緩存中存儲(chǔ)有已發(fā)送數(shù)據(jù)及發(fā)送編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述發(fā)送編號(hào)是按照遞增順序?qū)Πl(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述接收編號(hào)集合包含接收到的所述客戶端發(fā)送的數(shù)據(jù)所對(duì)應(yīng)的編號(hào)。
[0009]進(jìn)一步地,在所述接收所述客戶端發(fā)送的重連請(qǐng)求之前,還包括:
[0010]在與客戶端建立的連接斷開(kāi)后,向所述客戶端發(fā)送數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào),并將已發(fā)送的數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào)寫入所述本地緩存中;
[0011]在檢測(cè)到所述本地緩存中存儲(chǔ)的數(shù)據(jù)大小超過(guò)預(yù)設(shè)值時(shí),刪除本地緩存中的最小發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0012]進(jìn)一步地,在所述重新建立與所述客戶端的連接之后,還包括:
[0013]判斷所述本地緩存中是否具有大于所述最大數(shù)據(jù)編號(hào)的發(fā)送編號(hào);
[0014]若是,則將所述本地緩存中的所述發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)重新發(fā)送給所述客戶端。
[0015]進(jìn)一步地,在所述重新建立與所述客戶端的連接之后,還包括:
[0016]獲取所述接收編號(hào)集合中的最大編號(hào);
[0017]將所述最大編號(hào)發(fā)送給所述客戶端,使所述客戶端在判定所述客戶端緩存中具有大于所述最大編號(hào)的緩存編號(hào)時(shí),重新發(fā)送所述客戶端緩存中的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù);
[0018]接收所述客戶端重新發(fā)送的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0019]進(jìn)一步地,所述斷線重連方法還包括:
[0020]在與客戶端建立的連接斷開(kāi)前,向所述客戶端發(fā)送數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào),并將已發(fā)送的數(shù)據(jù)和發(fā)送編號(hào)寫入所述本地緩存中;
[0021]接收所述客戶端反饋的第一確認(rèn)信息;所述第一確認(rèn)信息包括已發(fā)送的發(fā)送編號(hào);
[0022]根據(jù)所述第一確認(rèn)信息中的發(fā)送編號(hào),刪除所述本地緩存中的所述發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0023]進(jìn)一步地,所述斷線重連方法還包括:
[0024]在與客戶端建立的連接斷開(kāi)前,接收所述客戶端發(fā)送的數(shù)據(jù)和對(duì)應(yīng)的緩存編號(hào);
[0025]將所述緩存編號(hào)保存到所述接收編號(hào)集合中,并根據(jù)所述緩存編號(hào)向所述客戶端反饋第二確認(rèn)信息,使所述客戶端根據(jù)所述第二確認(rèn)信息刪除所述客戶端緩存中的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0026]本發(fā)明實(shí)施例的另一個(gè)方面還提供一種斷線重連方法,包括:
[0027]在與服務(wù)器建立的連接斷開(kāi)后,向所述服務(wù)器發(fā)送重連請(qǐng)求;其中,所述重連請(qǐng)求包括本地緩存中的最小緩存編號(hào)和數(shù)據(jù)編號(hào)集合中的最大數(shù)據(jù)編號(hào);所述本地緩存中存儲(chǔ)有已發(fā)送數(shù)據(jù)及緩存編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述緩存編號(hào)是按照遞增順序?qū)Πl(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述數(shù)據(jù)編號(hào)集合包含接收到的所述服務(wù)器發(fā)送的數(shù)據(jù)所對(duì)應(yīng)的編號(hào);
[0028]接收所述服務(wù)器發(fā)送的檢測(cè)成功信息,并重新建立與所述服務(wù)器的連接;其中,所述檢測(cè)成功信息是所述服務(wù)器在檢測(cè)到服務(wù)器緩存中具有所述最大數(shù)據(jù)編號(hào),且接收編號(hào)集合中具有所述最小緩存編號(hào)時(shí)生成的;所述服務(wù)器緩存中存儲(chǔ)有所述服務(wù)器已發(fā)送的數(shù)據(jù)及發(fā)送編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述發(fā)送編號(hào)是所述服務(wù)器按照遞增順序?qū)Πl(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述接收編號(hào)集合包含所述服務(wù)器接收到的數(shù)據(jù)所對(duì)應(yīng)的編號(hào)。
[0029]進(jìn)一步地,在所述向所述服務(wù)器發(fā)送重連請(qǐng)求之前,還包括:
[0030]在與服務(wù)器建立的連接斷開(kāi)后,向所述服務(wù)器發(fā)送數(shù)據(jù)和對(duì)應(yīng)的緩存編號(hào),并將已發(fā)送的數(shù)據(jù)和對(duì)應(yīng)的緩存編號(hào)寫入所述本地緩存中;
[0031]在檢測(cè)到所述本地緩存中存儲(chǔ)的數(shù)據(jù)大小超過(guò)預(yù)設(shè)值時(shí),刪除本地緩存中的最小緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0032]進(jìn)一步地,在所述重新建立與所述服務(wù)器的連接之后,還包括:
[0033]接收所述服務(wù)器重新發(fā)送的發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù);所述重新發(fā)送的發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)是所述服務(wù)器在判定所述服務(wù)器緩存中具有大于所述最大數(shù)據(jù)編號(hào)的發(fā)送編號(hào)時(shí),從所述服務(wù)器緩存中獲得的相應(yīng)數(shù)據(jù)。
[0034]進(jìn)一步地,在所述重新建立與所述服務(wù)器的連接之后,還包括:
[0035]接收所述服務(wù)器發(fā)送的所述接收編號(hào)集合中的最大編號(hào);
[0036]判斷所述本地緩存中是否具有大于所述最大編號(hào)的緩存編號(hào);
[0037]若是,則將所述本地緩存中的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)重新發(fā)送給所述服務(wù)器。
[0038]進(jìn)一步地,所述斷線重連方法還包括:
[0039]在與服務(wù)器建立的連接斷開(kāi)前,接收所述服務(wù)器發(fā)送的數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào);
[0040]將所述發(fā)送編號(hào)保存到所述數(shù)據(jù)編號(hào)集合中,并根據(jù)所述發(fā)送編號(hào)向所述服務(wù)器反饋第一確認(rèn)信息,使所述服務(wù)器根據(jù)所述第一確認(rèn)信息刪除所述服務(wù)器緩存中的所述發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0041]進(jìn)一步地,所述斷線重連方法還包括:
[0042]在與服務(wù)器建立的連接斷開(kāi)前,向所述服務(wù)器發(fā)送數(shù)據(jù)和對(duì)應(yīng)的緩存編號(hào),并將已發(fā)送的數(shù)據(jù)和發(fā)送編號(hào)寫入所述本地緩存中;
[0043]接收所述服務(wù)器反饋的第二確認(rèn)信息;所述第二確認(rèn)信息包括已發(fā)送的緩存編號(hào);
[0044]根據(jù)所述第二確認(rèn)信息中的緩存編號(hào),刪除所述本地緩存中的所述發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0045]相應(yīng)的,本發(fā)明實(shí)施例的一個(gè)方面還提供一種斷線重連裝置,包括:
[0046]重連請(qǐng)求接收模塊,用于在與客戶端建立的連接斷開(kāi)后,接收所述客戶端發(fā)送的重連請(qǐng)求;其中,所述重連請(qǐng)求包括客戶端緩存中的最小緩存編號(hào)和數(shù)據(jù)編號(hào)集合中的最大數(shù)據(jù)編號(hào);所述客戶端緩存中存儲(chǔ)有所述客戶端已發(fā)送的數(shù)據(jù)及緩存編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述緩存編號(hào)是所述客戶端按照遞增順序?qū)λ隹蛻舳税l(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述數(shù)據(jù)編號(hào)集合包含所述客戶端接收到的數(shù)據(jù)所對(duì)應(yīng)的編號(hào);以及,
[0047]連接建立模塊,用于在檢測(cè)到本地緩存中具有所述最大數(shù)據(jù)編號(hào),且接收編號(hào)集合中具有所述最小緩存編號(hào)時(shí),向所述客戶端發(fā)送檢測(cè)成功信息,并重新建立與所述客戶端的連接;其中,所述本地緩存中存儲(chǔ)有已發(fā)送數(shù)據(jù)及發(fā)送編號(hào)的對(duì)應(yīng)關(guān)系數(shù)據(jù),所述發(fā)送編號(hào)是按照遞增順序?qū)Πl(fā)送的數(shù)據(jù)進(jìn)行編號(hào)而獲得的,所述接收編號(hào)集合包含接收到的所述客戶端發(fā)送的數(shù)據(jù)所對(duì)應(yīng)的編號(hào)。
[0048]進(jìn)一步地,所述斷線重連裝置還包括:
[0049]第一數(shù)據(jù)發(fā)送模塊,用于在與客戶端建立的連接斷開(kāi)后,向所述客戶端發(fā)送數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào),并將已發(fā)送的數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào)寫入所述本地緩存中;以及,
[0050]第一數(shù)據(jù)刪除模塊,用于在檢測(cè)到所述本地緩存中存儲(chǔ)的數(shù)據(jù)大小超過(guò)預(yù)設(shè)值時(shí),刪除本地緩存中的最小發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0051]進(jìn)一步地,所述斷線重連裝置還包括:
[0052]判斷模塊,用于判斷所述本地緩存中是否具有大于所述最大數(shù)據(jù)編號(hào)的發(fā)送編號(hào);以及,
[0053]數(shù)據(jù)重新發(fā)送模塊,用于在所述判斷模塊判定為是時(shí),將所述本地緩存中的所述發(fā)送編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)重新發(fā)送給所述客戶端。
[0054]進(jìn)一步地,所述斷線重連裝置還包括:
[0055]編號(hào)獲取模塊,用于獲取所述接收編號(hào)集合中的最大編號(hào);
[0056]編號(hào)發(fā)送模塊,用于將所述最大編號(hào)發(fā)送給所述客戶端,使所述客戶端在判定所述客戶端緩存中具有大于所述最大編號(hào)的緩存編號(hào)時(shí),重新發(fā)送所述客戶端緩存中的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù);以及,
[0057]第一數(shù)據(jù)接收模塊,用于接收所述客戶端重新發(fā)送的所述緩存編號(hào)和對(duì)應(yīng)的已發(fā)送數(shù)據(jù)。
[0058]進(jìn)一步地,所述斷線重連裝置還包括:
[0059]第二數(shù)據(jù)發(fā)送模塊,用于在與客戶端建立的連接斷開(kāi)前,向所述客戶端發(fā)送數(shù)據(jù)和對(duì)應(yīng)的發(fā)送編號(hào),并將已發(fā)送的數(shù)據(jù)和發(fā)送編號(hào)寫入所述本地緩存中;
[0060]確認(rèn)信息接收模塊,用于接收所述客戶端反饋的第一確認(rèn)信息;所述第一確認(rèn)信息包括已發(fā)送的發(fā)送編