基于xmpp協(xié)議的群組聊天方法及系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及一種基于XMPP協(xié)議的群組聊天方法及系統(tǒng)。
【背景技術】
[0002]隨著互聯(lián)網(wǎng)及移動互聯(lián)網(wǎng)的發(fā)展,用戶之間的社交溝通需求越來越強烈,如何即時高效、安全可靠地實現(xiàn)用戶之間多對多的通信,是眾多場景中亟需解決的問題。傳統(tǒng)的即時通信方法一般只提供類似會議室的多對多通信服務,要求用戶在參與多人聊天前加入會議室,在離開時退出會議室,服務端以此來判定用戶的狀態(tài)。由于移動互聯(lián)網(wǎng)的網(wǎng)絡不穩(wěn)定,因此當上述的額外行為出現(xiàn)失敗時,會導致服務端無法正確獲知當前的狀態(tài),最終可能導致無法保證消息100%到達。
【發(fā)明內容】
[0003]本發(fā)明要解決的技術問題是為了克服現(xiàn)有技術中互聯(lián)網(wǎng)多人聊天容易出現(xiàn)服務端無法正確獲知用戶的當前狀態(tài),因而造成消息有可能無法到達的缺陷,提供一種基于XMPP協(xié)議的群組聊天方法及系統(tǒng)。
[0004]本發(fā)明是通過下述技術方案來解決上述技術問題的:
[0005]一種基于XMPP協(xié)議的群組聊天方法,其特點在于,包括以下步驟:
[0006]S1、服務端以一消息接收接口獲取群組內的一用戶發(fā)送的消息;
[0007]S2、服務端解析該消息接收接口獲取的消息的報文格式,并將該消息作為待發(fā)送消息存儲至一消息數(shù)據(jù)庫中;
[0008]S3、服務端讀取群組內所有用戶的配置信息,根據(jù)配置信息和該消息的屬性確定符合接收條件的用戶作為接收用戶;
[0009]S4、服務端依次輪詢接收用戶并將該消息轉發(fā)給接收用戶。
[0010]其中,XMPP協(xié)議是一種基于標準通用標記語言的子集XML的協(xié)議。
[0011]較佳地,步驟SI中該用戶在發(fā)送消息的同時啟動一定時器,該定時器設置有一超時時間,若該超時時間內該用戶接收到該消息的回執(zhí)則確認該消息發(fā)送成功,否則確認該消息發(fā)送失敗,該群組聊天方法在步驟Si之后還包括一步驟Sll:判斷該消息是否在該用戶發(fā)出后的一預設時間段內由服務端接收到,若是則向發(fā)送該消息的用戶反饋該消息的回執(zhí)。
[0012]較佳地,步驟SI中服務端在獲取該消息后還為該消息生成一唯一的版本號。其中,每一條消息具有一版本號,越接近于當前時刻發(fā)送的消息具有越高的版本號,當群組內的任意一用戶的客戶端啟動時向服務端發(fā)出一同步請求,該同步請求包含該客戶端本地的消息的最高版本號,服務端根據(jù)該同步請求將該消息數(shù)據(jù)庫中高于該最高版本號的所有消息反饋給該客戶端。
[0013]較佳地,服務端針對群組內所有用戶發(fā)送的消息均以同一消息接收接口獲取并存儲至同一消息數(shù)據(jù)庫中。
[0014]較佳地,服務端還具有包括創(chuàng)建群組、加入群組、邀請用戶加入群組、退出群組、解散群組在內的用戶操作接口。
[0015]本發(fā)明還提供了一種基于XMPP協(xié)議的群組聊天系統(tǒng),包括一服務端和多個用戶端,每一用戶端對應于群組內的一用戶,其特點在于,該服務端包括:
[0016]消息接收接口,用于獲取群組內的一用戶發(fā)送的消息;
[0017]消息解析模塊,用于解析該消息接收接口獲取的消息的報文格式,并將該消息作為待發(fā)送消息存儲至一消息數(shù)據(jù)庫中;
[0018]該消息數(shù)據(jù)庫,用于存儲消息;
[0019]配置信息獲取模塊,用于讀取群組內所有用戶的配置信息,根據(jù)配置信息和該消息的屬性確定符合接收條件的用戶作為接收用戶;
[0020]消息轉發(fā)模塊,用于依次輪詢接收用戶并將該消息轉發(fā)給接收用戶。
[0021]容易理解地,本發(fā)明中所說的針對用戶執(zhí)行的動作實質上即是服務端針對客戶端或用戶端執(zhí)行的動作。
[0022]較佳地,每一用戶端包括定時模塊,該服務端還包括回執(zhí)反饋模塊。定時模塊用于在該用戶在發(fā)送消息的同時啟動一定時器,該定時器設置有一超時時間,若該超時時間內該用戶接收到該消息的回執(zhí)則確認該消息發(fā)送成功,否則確認該消息發(fā)送失敗?;貓?zhí)反饋模塊用于判斷該消息是否在該用戶發(fā)出后的一預設時間段內由服務端接收到,若是則向發(fā)送該消息的用戶反饋該消息的回執(zhí)。
[0023]較佳地,消息接收接口還用于在獲取該消息后為該消息生成一唯一的版本號。其中每一條消息具有一版本號,越接近于當前時刻發(fā)送的消息具有越高的版本號,每一用戶端還包括一同步請求模塊,用于在用戶端啟動時向服務端發(fā)出一同步請求,該同步請求包含該用戶端本地的消息的最高版本號,服務端還包括一同步模塊,用于根據(jù)收到的同步請求將該消息數(shù)據(jù)庫中高于該最高版本號的所有消息反饋給發(fā)出同步請求的用戶端。
[0024]較佳地,服務端針對群組內所有用戶發(fā)送的消息均以同一消息接收接口獲取并存儲至同一消息數(shù)據(jù)庫中。
[0025]較佳地,服務端還具有包括創(chuàng)建群組、加入群組、邀請用戶加入群組、退出群組、解散群組在內的用戶操作接口。
[0026]在符合本領域常識的基礎上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實例。
[0027]本發(fā)明的積極進步效果在于:本發(fā)明的基于XMPP協(xié)議的群組聊天方法及系統(tǒng),針對XMPP協(xié)議下的即時通信方法增加了容錯機制和保護性措施,能為用戶提供更可靠的多對多通信服務,并且使得用戶能夠恢復整個會話過程。
【附圖說明】
[0028]圖1為本發(fā)明實施例1的基于XMPP協(xié)議的群組聊天方法的流程圖。
[0029]圖2為本發(fā)明實施例2的基于XMPP協(xié)議的群組聊天系統(tǒng)的示意圖。
【具體實施方式】
[0030]下面通過實施例的方式進一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
[0031]實施例1
[0032]如圖1所示,本實施例的基于XMPP協(xié)議的群組聊天方法,包括以下步驟:
[0033]S1、服務端以一消息接收接口獲取群組內的一用戶發(fā)送的消息,然后為該消息生成一唯一的版本號,其中該用戶在發(fā)送消息的同時啟動一定時器,該定時器設置有一超時時間,若該超時時間內該用戶接收到該消息的回執(zhí)則確認該消息發(fā)送成功,否則確認該消息發(fā)送失?。?br>[0034]S11、判斷該消息是否在該用戶發(fā)出后的一預設時間段內由服務端接收到,若是則向發(fā)送該消息的用戶反饋該消息的回執(zhí)。
[0035]S2、服務端解析該消息接收接口獲取的消息的報文格式,并將該消息作為待發(fā)送消息存儲至一消息數(shù)據(jù)庫中;
[0036]S3、服務端讀取群組內所有用戶的配置信息,根據(jù)配置信息和該消息的屬性確定符合接收條件的用戶作為接收用戶;
[0037]S4、服務端依次輪詢接收用戶并將該消息轉發(fā)給接收用戶。
[0038]本實施例中,每一條消息具有一版本號,越接近于當前時刻發(fā)送的消息具有越高的版本號,當群組內的任意一用戶的客戶端啟動時向服務端發(fā)出一同步請求,該同步請