本發(fā)明屬于即時(shí)通訊領(lǐng)域,尤其涉及一種基于xmpp協(xié)議的即時(shí)通訊方法及系統(tǒng)。
背景技術(shù):
xmpp(extensiblemessagingandpresenceprotocol,可擴(kuò)展消息處理現(xiàn)場(chǎng)協(xié)議)是基于xml(extensiblemarkuplanguage,可擴(kuò)展標(biāo)記語(yǔ)言)的協(xié)議,它用于im(internetmessage,即時(shí)消息)以及在線現(xiàn)場(chǎng)探測(cè)。它促進(jìn)服務(wù)器之間的準(zhǔn)即時(shí)操作。這個(gè)協(xié)議可能最終允許因特網(wǎng)用戶向因特網(wǎng)上的其他任何人發(fā)送即時(shí)消息,即使這些因特網(wǎng)用戶的操作系統(tǒng)和瀏覽器不同。
現(xiàn)有的基于xmpp協(xié)議的即時(shí)通訊存在著如下缺陷:
實(shí)現(xiàn)基于xmpp協(xié)議的即時(shí)通訊的前提條件是客戶端與服務(wù)器的連接穩(wěn)定,但是由于各種原因,客戶端與服務(wù)器的連接的穩(wěn)定性難以保證;
客戶端包括發(fā)送端和接收端,消息傳遞時(shí)由于客戶端與服務(wù)器的連接斷開(kāi)會(huì)造成傳遞的消息的完整性和安全性較差。
消息從發(fā)送端發(fā)出,經(jīng)過(guò)服務(wù)器,到達(dá)接收端時(shí)需要消耗過(guò)多流量,資源浪費(fèi)嚴(yán)重。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種基于xmpp協(xié)議的即時(shí)通訊方法及系統(tǒng)。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種基于xmpp協(xié)議的即時(shí)通訊方法,包括如下步驟:
s1,發(fā)送端生成即時(shí)消息,并根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼,將首驗(yàn)碼和即時(shí)消息發(fā)送給服務(wù)器;
s2,服務(wù)器根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成再驗(yàn)碼,判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給發(fā)送端;
s3,發(fā)送端根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2,否則發(fā)送執(zhí)行指令到服務(wù)器并執(zhí)行s4;
s4,服務(wù)器根據(jù)接收的執(zhí)行指令將再驗(yàn)碼和即時(shí)消息發(fā)送給接收端;
s5,接收端根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成終驗(yàn)碼,判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給服務(wù)器;
s6,服務(wù)器根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5,否則結(jié)束。
本發(fā)明的有益效果是:通過(guò)在發(fā)送端生成首驗(yàn)碼和即時(shí)消息,在服務(wù)器生成再驗(yàn)碼,服務(wù)器通過(guò)首驗(yàn)碼和再驗(yàn)碼判斷首傳是否完整,發(fā)送端通過(guò)首驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從發(fā)送端傳遞到服務(wù)器,在接收端生成終驗(yàn)碼,接收端通過(guò)再驗(yàn)碼和終驗(yàn)碼判斷再傳是否完整,服務(wù)器通過(guò)再驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從服務(wù)器傳遞到接收端,通過(guò)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼的方式實(shí)現(xiàn)校驗(yàn)所必須使用的預(yù)設(shè)碼并未伴隨即時(shí)消息一起在網(wǎng)絡(luò)中傳遞,實(shí)現(xiàn)保證即時(shí)消息傳遞過(guò)程中的安全性。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn):
進(jìn)一步,所述判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息包括:當(dāng)接收的首驗(yàn)碼和再驗(yàn)碼相同時(shí),則生成第一回執(zhí)信息;當(dāng)接收的首驗(yàn)碼和再驗(yàn)碼不相同時(shí),則生成第二回執(zhí)信息。
進(jìn)一步,所述s3步驟包括:當(dāng)發(fā)送端接收到的是第一回執(zhí)信息時(shí),發(fā)送端對(duì)第一回執(zhí)信息按照校驗(yàn)規(guī)則進(jìn)行校驗(yàn)并生成回執(zhí)校驗(yàn)碼,確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼相同時(shí),則發(fā)送執(zhí)行指令到服務(wù)器并執(zhí)行s4,確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼不相同時(shí),則再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2;當(dāng)發(fā)送端接收到的是第二回執(zhí)信息時(shí),則發(fā)送端再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2。
進(jìn)一步,所述判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息包括:當(dāng)接收的再驗(yàn)碼和終驗(yàn)碼驗(yàn)碼相同時(shí),則生成第一回執(zhí)信息;當(dāng)接收的再驗(yàn)碼和終驗(yàn)碼不相同時(shí),則生成第二回執(zhí)信息。
進(jìn)一步,所述s6步驟包括:當(dāng)服務(wù)器接收到的是第一回執(zhí)信息時(shí),服務(wù)器對(duì)第一回執(zhí)信息按照校驗(yàn)規(guī)則進(jìn)行校驗(yàn)并生成回執(zhí)校驗(yàn)碼,確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼相同時(shí),則結(jié)束,確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼不相同時(shí),則再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5;當(dāng)服務(wù)器接收到的是第二回執(zhí)信息時(shí),則服務(wù)器再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5。
進(jìn)一步,所述發(fā)送端生成即時(shí)消息包括:
s11,發(fā)送端接收用戶輸入的信息,并對(duì)所述信息按照數(shù)據(jù)格式進(jìn)行拆分,得到至少一個(gè)初始信息塊;
s12,發(fā)送端根據(jù)初始信息塊的格式和排列方式對(duì)所述至少一個(gè)初始信息塊中的每一個(gè)初始信息塊進(jìn)行格式標(biāo)注和排列標(biāo)注;
s13,發(fā)送端根據(jù)所述至少一個(gè)初始信息塊的格式標(biāo)注調(diào)用匹配的壓縮算法對(duì)所述至少一個(gè)初始信息塊進(jìn)行壓縮,得到與所述至少一個(gè)初始信息塊所對(duì)應(yīng)的壓縮信息塊;
s14,發(fā)送端將與所述至少一個(gè)初始信息塊所對(duì)應(yīng)的壓縮信息塊進(jìn)行合并處理,得到即時(shí)消息。
進(jìn)一步,在所述s6步驟后還包括s7,所述s7步驟包括:
s71,接收端對(duì)接收的即時(shí)消息進(jìn)行拆解處理,得到至少一個(gè)壓縮信息塊;
s72,接收端根據(jù)所述至少一個(gè)壓縮信息塊的格式標(biāo)注調(diào)用匹配的解壓算法對(duì)所述至少一個(gè)壓縮信息塊進(jìn)行解壓,得到所述至少一個(gè)初始信息塊;
s73,接收端根據(jù)所述至少一個(gè)初始信息塊中的每個(gè)初始信息塊的排列標(biāo)注對(duì)所述至少一個(gè)初始信息塊進(jìn)行排列組合,形成所述用戶輸入的信息。
進(jìn)一步,所述s1步驟之前還包括s0,所述s0步驟包括:發(fā)送端和接收端分別與服務(wù)器建立連接。
進(jìn)一步,所述發(fā)送端與服務(wù)器建立連接包括:
s01,發(fā)送端向服務(wù)器發(fā)送連接請(qǐng)求,服務(wù)器接收所述連接請(qǐng)求并建立連接;
s02,服務(wù)器設(shè)置監(jiān)視所述連接的線程,以確定所述連接是否斷開(kāi);
s03,監(jiān)視所述連接的線程監(jiān)測(cè)到所述連接斷開(kāi)時(shí),則服務(wù)器立即做連接準(zhǔn)備,在服務(wù)器接收到連接請(qǐng)求即與發(fā)送端建立連接;監(jiān)視所述連接的線程監(jiān)測(cè)到所述連接未斷開(kāi)時(shí),則繼續(xù)監(jiān)視。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種基于xmpp協(xié)議的即時(shí)通訊系統(tǒng),包括:發(fā)送端、服務(wù)器和接收端;所述發(fā)送端包括:生成模塊和首傳處理模塊;所述服務(wù)器包括:首傳判斷模塊、再傳處理模塊和發(fā)送模塊;所述接收端包括:再傳判斷模塊;
所述生成模塊用于生成即時(shí)消息,并根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼,將首驗(yàn)碼和即時(shí)消息發(fā)送給首傳判斷模塊;
所述首傳判斷模塊用于根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成再驗(yàn)碼,判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給首傳處理模塊;
所述首傳處理模塊用于根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送首驗(yàn)碼和即時(shí)消息到首傳判斷模塊并調(diào)用首傳判斷模塊,否則調(diào)用發(fā)送模塊;
所述發(fā)送模塊用于將再驗(yàn)碼和即時(shí)消息發(fā)送給再傳判斷模塊;
所述再傳判斷模塊用于根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成終驗(yàn)碼,判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給再傳處理模塊;
再傳處理模塊用于根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送再驗(yàn)碼和即時(shí)消息到再傳判斷模塊并調(diào)用再傳判斷模塊,否則結(jié)束。
本發(fā)明的有益效果是:通過(guò)在發(fā)送端生成首驗(yàn)碼和即時(shí)消息,在服務(wù)器生成再驗(yàn)碼,服務(wù)器通過(guò)首驗(yàn)碼和再驗(yàn)碼判斷首傳是否完整,發(fā)送端通過(guò)首驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從發(fā)送端傳遞到服務(wù)器,在接收端生成終驗(yàn)碼,接收端通過(guò)再驗(yàn)碼和終驗(yàn)碼判斷再傳是否完整,服務(wù)器通過(guò)再驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從服務(wù)器傳遞到接收端,通過(guò)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼的方式實(shí)現(xiàn)校驗(yàn)所必須使用的預(yù)設(shè)碼并未伴隨即時(shí)消息一起在網(wǎng)絡(luò)中傳遞,實(shí)現(xiàn)保證即時(shí)消息傳遞過(guò)程中的安全性。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法的流程示意圖;
圖2為本發(fā)明另一實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法中的生成即時(shí)消息的流程示意圖;
圖3為本發(fā)明另一實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法中的解壓流程示意圖;
圖4為本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,本發(fā)明一實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法,包括如下步驟:
s1,發(fā)送端生成即時(shí)消息,并根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼,將首驗(yàn)碼和即時(shí)消息發(fā)送給服務(wù)器;
s2,服務(wù)器根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成再驗(yàn)碼,判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給發(fā)送端;
s3,發(fā)送端根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2,否則發(fā)送執(zhí)行指令到服務(wù)器并執(zhí)行s4;
s4,服務(wù)器根據(jù)接收的執(zhí)行指令將再驗(yàn)碼和即時(shí)消息發(fā)送給接收端;
s5,接收端根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成終驗(yàn)碼,判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給服務(wù)器;
s6,服務(wù)器根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5,否則結(jié)束。
本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法,通過(guò)在發(fā)送端生成首驗(yàn)碼和即時(shí)消息,在服務(wù)器生成再驗(yàn)碼,服務(wù)器通過(guò)首驗(yàn)碼和再驗(yàn)碼判斷首傳是否完整,發(fā)送端通過(guò)首驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從發(fā)送端傳遞到服務(wù)器,在接收端生成終驗(yàn)碼,接收端通過(guò)再驗(yàn)碼和終驗(yàn)碼判斷再傳是否完整,服務(wù)器通過(guò)再驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從服務(wù)器傳遞到接收端,通過(guò)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼的方式實(shí)現(xiàn)校驗(yàn)所必須使用的預(yù)設(shè)碼并未伴隨即時(shí)消息一起在網(wǎng)絡(luò)中傳遞,實(shí)現(xiàn)保證即時(shí)消息傳遞過(guò)程中的安全性。
本發(fā)明另一實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法,包括如下步驟:
s1,發(fā)送端生成即時(shí)消息,并根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼,將首驗(yàn)碼和即時(shí)消息發(fā)送給服務(wù)器;
s2,服務(wù)器根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成再驗(yàn)碼,判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給發(fā)送端;
s3,發(fā)送端根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2,否則發(fā)送執(zhí)行指令到服務(wù)器并執(zhí)行s4;
s4,服務(wù)器根據(jù)接收的執(zhí)行指令將再驗(yàn)碼和即時(shí)消息發(fā)送給接收端;
s5,接收端根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成終驗(yàn)碼,判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給服務(wù)器;
s6,服務(wù)器根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5,否則結(jié)束;
如圖2所示,所述發(fā)送端生成即時(shí)消息包括:
s11,發(fā)送端接收用戶輸入的信息,并對(duì)所述信息按照數(shù)據(jù)格式進(jìn)行拆分,得到至少一個(gè)初始信息塊;
s12,發(fā)送端根據(jù)初始信息塊的格式和排列方式對(duì)所述至少一個(gè)初始信息塊中的每一個(gè)初始信息塊進(jìn)行格式標(biāo)注和排列標(biāo)注;
s13,發(fā)送端根據(jù)所述至少一個(gè)初始信息塊的格式標(biāo)注調(diào)用匹配的壓縮算法對(duì)所述至少一個(gè)初始信息塊進(jìn)行壓縮,得到與所述至少一個(gè)初始信息塊所對(duì)應(yīng)的壓縮信息塊;
s14,發(fā)送端將與所述至少一個(gè)初始信息塊所對(duì)應(yīng)的壓縮信息塊進(jìn)行合并處理,得到即時(shí)消息。
本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法,通過(guò)發(fā)送端對(duì)用戶輸入的信息進(jìn)行拆分、標(biāo)注、采用最優(yōu)壓縮算法進(jìn)行壓縮和合并處理,得到即時(shí)消息,實(shí)現(xiàn)格式類型不同的初始信息塊采用不同的最優(yōu)算法進(jìn)行壓縮,減少了即時(shí)消息的占用空間,減少即時(shí)消息傳遞過(guò)程所消耗的流量,避免了資源浪費(fèi)。
如圖3所示,在所述s6步驟中結(jié)束時(shí)還包括s7,所述s7步驟包括:
s71,接收端對(duì)接收的即時(shí)消息進(jìn)行拆解處理,得到至少一個(gè)壓縮信息塊;
s72,接收端根據(jù)所述至少一個(gè)壓縮信息塊的格式標(biāo)注調(diào)用匹配的解壓算法對(duì)所述至少一個(gè)壓縮信息塊進(jìn)行解壓,得到所述至少一個(gè)初始信息塊;
s73,接收端根據(jù)所述至少一個(gè)初始信息塊中的每個(gè)初始信息塊的排列標(biāo)注對(duì)所述至少一個(gè)初始信息塊進(jìn)行排列組合,形成所述用戶輸入的信息。
本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊方法,通過(guò)接收端對(duì)即時(shí)消息進(jìn)行拆解、采用最優(yōu)解壓算法進(jìn)行解壓和排列組合處理,得到用戶輸入的信息,實(shí)現(xiàn)格式類型不同的壓縮信息塊采用不同的最優(yōu)解壓算法進(jìn)行解壓,減少了即時(shí)消息的占用空間,減少即時(shí)消息傳遞過(guò)程所消耗的流量,避免了資源浪費(fèi)。
該實(shí)施例中,所述預(yù)設(shè)碼是預(yù)先設(shè)置在發(fā)送端、接收端和服務(wù)器中的一種編碼,利用此預(yù)設(shè)碼和即時(shí)消息根據(jù)校驗(yàn)規(guī)則能夠生成首驗(yàn)碼、再驗(yàn)碼或是終驗(yàn)碼,此預(yù)設(shè)碼并不與即時(shí)消息一起在網(wǎng)絡(luò)中傳遞,保證即時(shí)消息的安全性。所述校驗(yàn)規(guī)則可以為md5(messagedigestalgorithm,第五版即時(shí)消息摘要算法),根據(jù)預(yù)設(shè)碼和即時(shí)消息按照md5生成首驗(yàn)碼、再驗(yàn)碼和終驗(yàn)碼,若即時(shí)消息中的數(shù)據(jù)在從發(fā)送端到服務(wù)器的傳遞過(guò)程中發(fā)生一點(diǎn)變化或修改則生成的首驗(yàn)碼和再驗(yàn)碼將不再相同,若即時(shí)消息中的數(shù)據(jù)在從服務(wù)器到接收端的傳遞過(guò)程中發(fā)生一點(diǎn)變化或修改則生成的再驗(yàn)碼和終驗(yàn)碼將不再相同,如此即可保證即時(shí)消息傳遞的完整性和準(zhǔn)確性。
發(fā)送端先按照s11步驟到s14步驟描述的內(nèi)容接收用戶輸入的信息,并進(jìn)行壓縮處理,從而生成即時(shí)消息;再按照s1步驟到s6步驟描述的內(nèi)容進(jìn)行傳輸校驗(yàn);最后由接收端按照s71步驟到s73步驟描述的內(nèi)容進(jìn)行解壓處理得到用戶輸入的信息。從而實(shí)現(xiàn)了即時(shí)消息的傳遞和使用最小流量進(jìn)行傳遞。
s11步驟中,發(fā)送端采用現(xiàn)有技術(shù)中存在的方法對(duì)信息按照數(shù)據(jù)格式進(jìn)行拆分,得到至少一個(gè)初始信息塊,相鄰的初始信息塊的格式不同;s12步驟中,不同格式的初始信息塊采用不同的格式標(biāo)注;s13步驟中,當(dāng)初始信息塊為多個(gè)且存在相同格式的情況時(shí),對(duì)于格式相同的多個(gè)初始信息塊可采用同一壓縮算法進(jìn)行統(tǒng)一壓縮,得到一個(gè)壓縮信息塊,也可采用同一壓縮算法分別進(jìn)行壓縮,得到多個(gè)壓縮信息塊。匹配的壓縮算法是與格式標(biāo)注所代表的數(shù)據(jù)格式類型對(duì)應(yīng)的最優(yōu)壓縮算法。對(duì)于格式相同的多個(gè)初始信息塊采用統(tǒng)一壓縮時(shí),s72步驟中是調(diào)用匹配的解壓算法對(duì)一個(gè)壓縮信息塊進(jìn)行解壓,得到多個(gè)初始信息塊,對(duì)于格式相同的多個(gè)初始信息塊采用分別壓縮時(shí),s72步驟中是調(diào)用匹配的解壓算法對(duì)多個(gè)壓縮信息塊進(jìn)行解壓,得到與多個(gè)壓縮信息塊對(duì)應(yīng)的初始信息塊。
下面以一具體例子說(shuō)明最優(yōu)壓縮算法:用戶輸入的信息的格式均是文本格式,現(xiàn)有技術(shù)中對(duì)文本格式的信息進(jìn)行壓縮的方式有多種,采用字符壓縮算法壓縮得快且準(zhǔn)確,壓縮后信息占用空間小,因而將字符壓縮算法作為文本格式對(duì)應(yīng)的最優(yōu)壓縮算法。最優(yōu)解壓算法與最優(yōu)壓縮算法類似,在此不再贅述。
可選地,本發(fā)明實(shí)施例中,所述判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息包括:當(dāng)接收的首驗(yàn)碼和再驗(yàn)碼相同時(shí),則生成第一回執(zhí)信息;當(dāng)接收的首驗(yàn)碼和再驗(yàn)碼不相同時(shí),則生成第二回執(zhí)信息。
該實(shí)施例中,第一回執(zhí)信息和第二回執(zhí)信息的內(nèi)容不同,第一回執(zhí)信息設(shè)置為固定不變的,第二回執(zhí)信息是隨意生成的,可為任意值?;貓?zhí)信息的格式可以是ask碼形式。s2步驟中的判斷只能生成一種相應(yīng)回執(zhí)信息,要么是第一回執(zhí)信息,要么是第二回執(zhí)信息。
可選地,本發(fā)明實(shí)施例中,所述s3步驟包括:當(dāng)發(fā)送端接收到的是第一回執(zhí)信息時(shí),發(fā)送端對(duì)第一回執(zhí)信息按照校驗(yàn)規(guī)則進(jìn)行校驗(yàn)并生成回執(zhí)校驗(yàn)碼,確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼相同時(shí),則發(fā)送執(zhí)行指令到服務(wù)器并執(zhí)行s4,確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼不相同時(shí),則再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2;當(dāng)發(fā)送端接收到的是第二回執(zhí)信息時(shí),則發(fā)送端再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器并返回s2。
該實(shí)施例中,第一回執(zhí)信息有可能是其他客戶端或是服務(wù)器冒充發(fā)送的,因而發(fā)送端需要對(duì)第一回執(zhí)信息進(jìn)行校驗(yàn)。當(dāng)發(fā)送端確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼相同時(shí),說(shuō)明即時(shí)消息首傳完整且第一回執(zhí)信息完整、準(zhǔn)確到達(dá)發(fā)送端,確定第一回執(zhí)信息是由服務(wù)器發(fā)送的;當(dāng)發(fā)送端確定回執(zhí)校驗(yàn)碼與首驗(yàn)碼不同時(shí),說(shuō)明第一回執(zhí)信息是其他客戶端或是服務(wù)器冒充發(fā)送的,則發(fā)送端再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器,直到收到服務(wù)器發(fā)送的第一回執(zhí)信息,且根據(jù)第一回執(zhí)信息生成的回執(zhí)校驗(yàn)碼與首驗(yàn)碼相同;當(dāng)發(fā)送端接收到的是第二回執(zhí)信息時(shí),說(shuō)明服務(wù)器接收的即時(shí)消息不完整和/或被修改,因而發(fā)送端需要再次發(fā)送首驗(yàn)碼和即時(shí)消息到服務(wù)器,直到收到服務(wù)器發(fā)送的第一回執(zhí)信息,且根據(jù)第一回執(zhí)信息生成的回執(zhí)校驗(yàn)碼與首驗(yàn)碼相同,發(fā)送端從日志中調(diào)取首驗(yàn)碼和即時(shí)消息,再次發(fā)送給服務(wù)器。校驗(yàn)規(guī)則可以是md5(messagedigestalgorithm,第五版即時(shí)消息摘要算法),對(duì)第一回執(zhí)信息進(jìn)行校驗(yàn)所采用的校驗(yàn)規(guī)則與生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼所采用的校驗(yàn)規(guī)則相同。首傳完整是指即時(shí)消息從發(fā)送端準(zhǔn)確且完整的到達(dá)服務(wù)器。
上述實(shí)施例中,通過(guò)對(duì)首驗(yàn)碼和再驗(yàn)碼相同時(shí)生成的第一回執(zhí)信息進(jìn)行校驗(yàn)使得發(fā)送端確定首傳是否完整,回執(zhí)信息是否由服務(wù)器發(fā)送,實(shí)現(xiàn)提高即時(shí)消息傳遞的安全性,確定首驗(yàn)碼和再驗(yàn)碼不相同時(shí)生成的第二回執(zhí)信息使得發(fā)送端確定首傳不完整且再次發(fā)送,實(shí)現(xiàn)提高即時(shí)消息從發(fā)送端傳遞到服務(wù)器過(guò)程中的完整性和準(zhǔn)確性。
可選地,本發(fā)明實(shí)施例中,所述判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息包括:當(dāng)接收的再驗(yàn)碼和終驗(yàn)碼驗(yàn)碼相同時(shí),則生成第一回執(zhí)信息;當(dāng)接收的再驗(yàn)碼和終驗(yàn)碼不相同時(shí),則生成第二回執(zhí)信息。
該實(shí)施例中,由于首驗(yàn)碼、再驗(yàn)碼和終驗(yàn)碼是根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成的,而在發(fā)送端、服務(wù)器和接收端設(shè)置的預(yù)設(shè)碼一致,即時(shí)消息一致,校驗(yàn)規(guī)則一致,故若傳輸過(guò)程完整且準(zhǔn)確,則生成的首驗(yàn)碼、再驗(yàn)碼和終驗(yàn)碼是一致的。因而在s2步驟中生成的第一回執(zhí)信息與s5步驟中生成的第一回執(zhí)信息一致,或在s2步驟中生成的第二回執(zhí)信息與s5步驟中生成的第二回執(zhí)信息對(duì)應(yīng)。第一回執(zhí)信息和第二回執(zhí)信息的內(nèi)容不同,第一回執(zhí)信息設(shè)置為固定不變的,第二回執(zhí)信息是隨意生成的,可為任意值?;貓?zhí)信息的格式可以是ask碼形式。s5步驟中的判斷只能生成一種相應(yīng)回執(zhí)信息,要么是第一回執(zhí)信息,要么是第二回執(zhí)信息。
可選地,本發(fā)明實(shí)施例中,所述s6步驟包括:當(dāng)服務(wù)器接收到的是第一回執(zhí)信息時(shí),服務(wù)器對(duì)第一回執(zhí)信息按照校驗(yàn)規(guī)則進(jìn)行校驗(yàn)并生成回執(zhí)校驗(yàn)碼,確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼相同時(shí),則結(jié)束,確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼不相同時(shí),則再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5;當(dāng)服務(wù)器接收到的是第二回執(zhí)信息時(shí),則服務(wù)器再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端并返回s5。
該實(shí)施例中,第一回執(zhí)信息有可能是其他客戶端或是服務(wù)器冒充發(fā)送的,因而服務(wù)器需要對(duì)第一回執(zhí)信息進(jìn)行校驗(yàn)。當(dāng)服務(wù)器確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼相同時(shí),說(shuō)明即時(shí)消息再傳完整且第一回執(zhí)信息完整、準(zhǔn)確到達(dá)服務(wù)器,確定第一回執(zhí)信息是由接收端發(fā)送的;當(dāng)服務(wù)器確定回執(zhí)校驗(yàn)碼與再驗(yàn)碼不同時(shí),說(shuō)明第一回執(zhí)信息是其他客戶端或是服務(wù)器冒充發(fā)送的,則服務(wù)器再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端,直到收到接收端發(fā)送的第一回執(zhí)信息,且根據(jù)第一回執(zhí)信息生成的回執(zhí)校驗(yàn)碼與再驗(yàn)碼相同;當(dāng)服務(wù)器接收到的是第二回執(zhí)信息時(shí),說(shuō)明接收端接收的即時(shí)消息不完整和/或被修改,因而服務(wù)器需要再次發(fā)送再驗(yàn)碼和即時(shí)消息到接收端,直到收到接收端發(fā)送的第一回執(zhí)信息,且根據(jù)第一回執(zhí)信息生成的回執(zhí)校驗(yàn)碼與再驗(yàn)碼相同,服務(wù)器從日志中調(diào)取再驗(yàn)碼和即時(shí)消息,再次發(fā)送給接收端。校驗(yàn)規(guī)則可以是md5(messagedigestalgorithm,第五版即時(shí)消息摘要算法),對(duì)第一回執(zhí)信息進(jìn)行校驗(yàn)所采用的校驗(yàn)規(guī)則與生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼所采用的校驗(yàn)規(guī)則相同。再傳完整是指即時(shí)消息從服務(wù)器準(zhǔn)確且完整的到達(dá)接收端。
上述實(shí)施例中,通過(guò)對(duì)再驗(yàn)碼和終驗(yàn)碼相同時(shí)生成的第一回執(zhí)信息進(jìn)行校驗(yàn)使得服務(wù)器確定再傳是否完整,回執(zhí)信息是否由接收端發(fā)送,實(shí)現(xiàn)提高即時(shí)消息傳遞的安全性,確定再驗(yàn)碼和終驗(yàn)碼不相同時(shí)則生成的第二回執(zhí)信息使得服務(wù)器確定再傳不完整且再次發(fā)送,實(shí)現(xiàn)提高即時(shí)消息從服務(wù)器傳遞到接收端過(guò)程中的完整性和準(zhǔn)確性。
可選地,本發(fā)明實(shí)施例中,所述s1步驟之前還包括s0,所述s0步驟包括:發(fā)送端和接收端分別與服務(wù)器建立連接。
可選地,本發(fā)明實(shí)施例中,所述發(fā)送端與服務(wù)器建立連接包括:
s01,發(fā)送端向服務(wù)器發(fā)送連接請(qǐng)求,服務(wù)器接收所述連接請(qǐng)求并建立連接;
s02,服務(wù)器設(shè)置監(jiān)視所述連接的線程,以確定所述連接是否斷開(kāi);
s03,監(jiān)視所述連接的線程監(jiān)測(cè)到所述連接斷開(kāi)時(shí),則服務(wù)器立即做連接準(zhǔn)備,在服務(wù)器接收到連接請(qǐng)求即與發(fā)送端建立連接;監(jiān)視所述連接的線程監(jiān)測(cè)到所述連接未斷開(kāi)時(shí),則繼續(xù)監(jiān)視。
該實(shí)施例中,接收端與服務(wù)器建立連接的方式同發(fā)送端與服務(wù)器建立連接的方式相比,其不同之處僅在于與服務(wù)器建立連接的對(duì)象不同,前者是接收端,后者是發(fā)送端,因而接收端與服務(wù)器建立連接的過(guò)程在此不再贅述。
本發(fā)明實(shí)施例所述的連接方式可應(yīng)用在長(zhǎng)連接輪訓(xùn)方式或是websocket方式上。所述連接準(zhǔn)備包括對(duì)連接需要的參數(shù)進(jìn)行設(shè)置等。所述服務(wù)器接收到連接請(qǐng)求包括服務(wù)器接收到發(fā)送端發(fā)送的連接請(qǐng)求或是服務(wù)器接收到服務(wù)器發(fā)送的連接請(qǐng)求。
上述實(shí)施例中,通過(guò)服務(wù)器設(shè)置監(jiān)視連接的線程,確定連接是否斷開(kāi),并在斷開(kāi)時(shí)立即做連接準(zhǔn)備,當(dāng)服務(wù)器或發(fā)送端發(fā)送連接請(qǐng)求時(shí)即可實(shí)現(xiàn)連接,從而保證發(fā)送端與服務(wù)器的連接,提高連接的穩(wěn)定性。
如圖4所示,本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊系統(tǒng),包括:發(fā)送端、服務(wù)器和接收端;所述發(fā)送端包括:生成模塊和首傳處理模塊;所述服務(wù)器包括:首傳判斷模塊、再傳處理模塊和發(fā)送模塊;所述接收端包括:再傳判斷模塊;
所述生成模塊用于生成即時(shí)消息,并根據(jù)預(yù)設(shè)碼和即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼,將首驗(yàn)碼和即時(shí)消息發(fā)送給首傳判斷模塊;
所述首傳判斷模塊用于根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成再驗(yàn)碼,判斷接收的首驗(yàn)碼和再驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給首傳處理模塊;
所述首傳處理模塊用于根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送首驗(yàn)碼和即時(shí)消息到首傳判斷模塊并調(diào)用首傳判斷模塊,否則調(diào)用發(fā)送模塊;
所述發(fā)送模塊用于將再驗(yàn)碼和即時(shí)消息發(fā)送給再傳判斷模塊;
所述再傳判斷模塊用于根據(jù)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成終驗(yàn)碼,判斷接收的再驗(yàn)碼和終驗(yàn)碼是否相同,根據(jù)判斷結(jié)果生成相應(yīng)回執(zhí)信息并發(fā)送給再傳處理模塊;
再傳處理模塊用于根據(jù)接收到的相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,是則再次發(fā)送再驗(yàn)碼和即時(shí)消息到再傳判斷模塊并調(diào)用再傳判斷模塊,否則結(jié)束。
本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊系統(tǒng),通過(guò)在發(fā)送端生成首驗(yàn)碼和即時(shí)消息,在服務(wù)器生成再驗(yàn)碼,服務(wù)器通過(guò)首驗(yàn)碼和再驗(yàn)碼判斷首傳是否完整,發(fā)送端通過(guò)首驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從發(fā)送端傳遞到服務(wù)器,在接收端生成終驗(yàn)碼,接收端通過(guò)再驗(yàn)碼和終驗(yàn)碼判斷再傳是否完整,服務(wù)器通過(guò)再驗(yàn)碼和相應(yīng)回執(zhí)信息判斷是否再次發(fā)送,實(shí)現(xiàn)將即時(shí)消息準(zhǔn)確且完整地從服務(wù)器傳遞到接收端,通過(guò)預(yù)設(shè)碼和接收的即時(shí)消息按照校驗(yàn)規(guī)則生成首驗(yàn)碼、再驗(yàn)碼或終驗(yàn)碼的方式實(shí)現(xiàn)校驗(yàn)所必須使用的預(yù)設(shè)碼并未伴隨即時(shí)消息一起在網(wǎng)絡(luò)中傳遞,實(shí)現(xiàn)保證即時(shí)消息傳遞過(guò)程中的安全性。
本發(fā)明實(shí)施例提供的基于xmpp協(xié)議的即時(shí)通訊系統(tǒng)中各個(gè)模塊所執(zhí)行的功能已經(jīng)在上述實(shí)施例基于xmpp協(xié)議的即時(shí)通訊方法中做了詳細(xì)介紹,在此不再贅述。
本發(fā)明所有實(shí)施例中,發(fā)送端和接收端只是為了說(shuō)明即時(shí)消息的傳遞過(guò)程,發(fā)送端和接收端均在瀏覽器上并用于即時(shí)消息通訊。發(fā)送端和接收端根據(jù)所處理的內(nèi)容可進(jìn)行轉(zhuǎn)換,例如接收端要發(fā)送即時(shí)消息時(shí)就成為了“發(fā)送端”,處理“發(fā)送端”應(yīng)處理內(nèi)容。發(fā)送端、接收端和服務(wù)器在進(jìn)行各種處理時(shí)均將處理涉及的數(shù)據(jù)存儲(chǔ)在日志中,從而實(shí)現(xiàn)再次發(fā)送的調(diào)取。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。