两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

狀態(tài)通知方法及系統(tǒng)的制作方法

文檔序號(hào):7899019閱讀:370來(lái)源:國(guó)知局
專利名稱:狀態(tài)通知方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及即時(shí)通信與狀態(tài)服務(wù)技術(shù)領(lǐng)域,特別涉及一種狀態(tài)通知方法及系統(tǒng)。
背景技術(shù)
IMPS業(yè)務(wù)是由即時(shí)通訊Qnstant Message, IM)業(yè)務(wù)和狀態(tài)服務(wù)(Presence)業(yè) 務(wù)組成的。Presence業(yè)務(wù),就是使得參與實(shí)體(人或者應(yīng)用)通過(guò)網(wǎng)絡(luò)實(shí)時(shí)發(fā)布和修改自己 的個(gè)性化信息,比如位置、心情、連通性(外出就餐、開會(huì))等,同時(shí)參與實(shí)體可以通過(guò)訂 閱、授權(quán)等方式控制存在信息的發(fā)布范圍。此系統(tǒng)包括IMPS客戶端與服務(wù)器,客戶端向服務(wù)器發(fā)送用戶狀態(tài)的設(shè)置指令,服 務(wù)器存儲(chǔ)此用戶的狀態(tài),并傳送給需要此用戶狀態(tài)的客戶端。服務(wù)器與客戶端之間同步狀態(tài)有以下兩種方法第一種方法是PULL方式,客戶端在需要展示狀態(tài)時(shí)從服務(wù)器查詢或者定時(shí)從服 務(wù)器查詢。此方法常用于客戶端與服務(wù)器使用短連接的情況。第二種方法是PUSH方式,服務(wù)器在狀態(tài)發(fā)生變更時(shí)主動(dòng)向客戶端發(fā)送狀態(tài)變更 通知。此方法用于客戶端與服務(wù)器使用長(zhǎng)連接的情況。一般的狀態(tài)通知實(shí)現(xiàn)方式為客戶端在登錄服務(wù)器時(shí),向服務(wù)器請(qǐng)求訂閱好友的狀態(tài),服務(wù)器向客戶端發(fā)送好 友的初始狀態(tài),然后在被訂閱者的狀態(tài)更新后,向訂閱者發(fā)送狀態(tài)變更通知。這個(gè)方式的缺點(diǎn)為服務(wù)器向客戶端登錄時(shí)發(fā)送好友的初始狀態(tài),對(duì)于昵稱、頭像 這些持久的狀態(tài),一般情況下用戶很少修改,但即使沒(méi)有發(fā)生任何變化,也需要全部推送給 客戶端,增加了通信量,浪費(fèi)了網(wǎng)絡(luò)流量,這個(gè)問(wèn)題對(duì)于手機(jī)客戶端尤其嚴(yán)重。

發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題本發(fā)明要解決的技術(shù)問(wèn)題是如何解決客戶端登錄時(shí),服務(wù)器向客戶端發(fā)送的初始 狀態(tài)通信量、網(wǎng)絡(luò)流量過(guò)大的問(wèn)題。(二)技術(shù)方案為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種狀態(tài)通知方法,包括以下步驟Sl 修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器;S2:所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根據(jù)所述修改 的狀態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶的狀態(tài)集,并 為所述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則將所述修改的狀態(tài)項(xiàng)作為狀態(tài)集,所述持久 類狀態(tài)為設(shè)置后一直有效的狀態(tài),所述狀態(tài)集中包括若干狀態(tài)項(xiàng);S3:所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服務(wù)器中被請(qǐng) 求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所
4述請(qǐng)求客戶端;S4:所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知包進(jìn)行解析,判斷 所述狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩存保存所述被請(qǐng) 求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩存不保存所述狀 態(tài)集。其中,步驟S4之后還包括步驟S5:請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀態(tài)集所包括的所有狀態(tài)項(xiàng)。其中,步驟S3中,具體包括步驟S31 所述請(qǐng)求客戶端登錄時(shí),將所述請(qǐng)求客戶端的本地緩存中的狀態(tài)版本號(hào)打包 生成訂閱請(qǐng)求包,并將所述訂閱請(qǐng)求包發(fā)送至所述服務(wù)器;S32:所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng)求包中是否存在狀 態(tài)版本號(hào);S33 若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶的狀態(tài)集對(duì)應(yīng) 的狀態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則將所述被請(qǐng)求 用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所述 請(qǐng)求客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知 包,并將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端。其中,步驟S31中的訂閱請(qǐng)求包中還包括狀態(tài)列表,所述狀態(tài)列表為所述請(qǐng)求客 戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。其中,步驟S3中,若所述被請(qǐng)求用戶的數(shù)量大于預(yù)定數(shù)量,所述服務(wù)器使所述被 請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包發(fā)送一次,若所述被請(qǐng)求用戶的數(shù)量小于等于預(yù) 定數(shù)量時(shí),直接打包發(fā)送。本發(fā)明還公開了一種狀態(tài)通知系統(tǒng),包括發(fā)送模塊,用于修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器;判斷模塊,用于所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根 據(jù)所述修改的狀態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶 的狀態(tài)集,并為所述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則將所述修改的狀態(tài)項(xiàng)作為狀態(tài) 集,所述持久類狀態(tài)為設(shè)置后一直有效的狀態(tài),所述狀態(tài)集中包括若干狀態(tài)項(xiàng);打包模塊,用于所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服 務(wù)器中被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知 包發(fā)送至所述請(qǐng)求客戶端;解析保存模塊,用于所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知 包進(jìn)行解析,判斷所述狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩 存保存所述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩 存不保存所述狀態(tài)集。其中,還包括顯示模塊,用于請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀態(tài)集所包括的所有 狀態(tài)項(xiàng)。
其中,所述打包模塊中具體包括打包子模塊,用于所述請(qǐng)求客戶端登錄時(shí),將所述請(qǐng)求客戶端的本地緩存中的狀 態(tài)版本號(hào)打包生成訂閱請(qǐng)求包,并將所述訂閱請(qǐng)求包發(fā)送至所述服務(wù)器;解析判斷子模塊,用于所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng) 求包中是否存在狀態(tài)版本號(hào);發(fā)送子模塊,用于若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶 的狀態(tài)集對(duì)應(yīng)的狀態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則 將所述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知 包發(fā)送至所述請(qǐng)求客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包 生成狀態(tài)通知包,并將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端。其中,所述打包子模塊中的訂閱請(qǐng)求包中還包括狀態(tài)列表,所述狀態(tài)列表為所述 請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。其中,所述打包模塊中,若所述被請(qǐng)求用戶的數(shù)量大于預(yù)定數(shù)量,所述服務(wù)器使所 述被請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包發(fā)送一次,若所述被請(qǐng)求用戶的數(shù)量小于等 于預(yù)定數(shù)量時(shí),直接打包發(fā)送。(三)有益效果本發(fā)明提供了狀態(tài)通知的一種優(yōu)化實(shí)現(xiàn)方法,解決客戶端登錄時(shí),服務(wù)器向客戶 端發(fā)送的初始狀態(tài)通信量、網(wǎng)絡(luò)流量過(guò)大的問(wèn)題。


圖1是按照本發(fā)明一種實(shí)施方式的狀態(tài)通知方法的流程圖;圖2是按照本發(fā)明一種實(shí)施方式的狀態(tài)通知系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施 例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。IMPS系統(tǒng)中的狀態(tài)分為兩類,一類是在線類,如在線狀態(tài)(在線、忙碌、離開),在 線設(shè)備類型(PC、手機(jī))等,客戶端離線后就無(wú)效,這類狀態(tài)變更頻繁,客戶端的每次登錄都 會(huì)導(dǎo)致狀態(tài)變更(由離線變?yōu)樵诰€),另一類是持久類,如昵稱、心情、頭像等,設(shè)置后一直 有效,這類狀態(tài)變更頻度低,大部分客戶端在設(shè)置一次后就很少修改。為實(shí)現(xiàn)解決客戶端登錄時(shí),服務(wù)器向客戶端發(fā)送的初始狀態(tài)通信量、網(wǎng)絡(luò)流量過(guò) 大的問(wèn)題,客戶端對(duì)變更頻度低的持久類狀態(tài)進(jìn)行緩存,客戶端登錄時(shí),向服務(wù)器提交緩存 的狀態(tài)版本號(hào)信息,服務(wù)器通過(guò)版本號(hào)控制緩存的更新,只向客戶端同步新變更的狀態(tài)。圖1是按照本發(fā)明一種實(shí)施方式的狀態(tài)通知方法的流程圖,包括以下步驟Sl 修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器,所述修改的狀態(tài)項(xiàng) 發(fā)送至服務(wù)器通過(guò)狀態(tài)更新包發(fā)送,所述狀態(tài)更新包中包括消息類型、業(yè)務(wù)號(hào)、所述修改了 自身狀態(tài)的客戶端賬號(hào)、所述修改的狀態(tài)項(xiàng)等數(shù)據(jù)信息,所述消息類型用于分辨數(shù)據(jù)包是 狀態(tài)更新包、狀態(tài)通知包,還是訂閱請(qǐng)求包;
S2:所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根據(jù)所述修改 的狀態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶的狀態(tài)集,并 為所述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào)(新分配的版本號(hào)比已有的版本號(hào)大),若否,則表明 所述修改的狀態(tài)項(xiàng)為在線類狀態(tài),不分配狀態(tài)版本號(hào),將所述修改的狀態(tài)項(xiàng)作為狀態(tài)集;S3:所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服務(wù)器中被請(qǐng) 求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所 述請(qǐng)求客戶端;S4 所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知包進(jìn)行解析,判斷 所述狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩存保存所述被請(qǐng) 求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩存不保存所述狀 態(tài)集。步驟S4之后還包括步驟S5:請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀態(tài)集所包括的所有狀態(tài)項(xiàng)。步驟S3中,具體包括步驟S31 所述請(qǐng)求客戶端登錄時(shí)(請(qǐng)求客戶端登陸時(shí),對(duì)被請(qǐng)求用戶的在線類信息, 被請(qǐng)求用戶默認(rèn)顯示離線;對(duì)被請(qǐng)求用戶的持久類信息,若本地有緩存信息,則默認(rèn)顯示緩 存信息),將所述請(qǐng)求客戶端的本地緩存中的狀態(tài)版本號(hào)打包生成訂閱請(qǐng)求包,并將所述訂 閱請(qǐng)求包發(fā)送至所述服務(wù)器,所述訂閱請(qǐng)求包中包括消息類型、業(yè)務(wù)號(hào)、被請(qǐng)求用戶賬號(hào) 以及所述請(qǐng)求客戶端的本地緩存中與被請(qǐng)求用戶賬號(hào)對(duì)應(yīng)的狀態(tài)版本號(hào)(如沒(méi)有狀態(tài)版 本號(hào),則將狀態(tài)版本號(hào)設(shè)置為0);S32:所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng)求包中是否存在狀 態(tài)版本號(hào)(判斷時(shí),若狀態(tài)版本號(hào)為0,則判定為不存在版本號(hào));S33 若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶的狀態(tài)集對(duì)應(yīng) 的狀態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則將所述被請(qǐng)求 用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所述 請(qǐng)求客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知 包,并將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端,所述狀態(tài)通知包中包括信息類型、業(yè)務(wù)號(hào)、被 請(qǐng)求用戶賬號(hào)、被請(qǐng)求用戶的在線類狀態(tài)、被請(qǐng)求用戶的持久類狀態(tài)以及與所述持久類狀 態(tài)對(duì)應(yīng)的狀態(tài)版本號(hào)。由于不同的客戶端,需要顯示的狀態(tài)集不一樣,比如手機(jī)客戶端只需要昵稱與心 情,而PC客戶端除了昵稱、心情,還需要頭像、動(dòng)態(tài)、位置等等,由客戶端在訂閱請(qǐng)求中提交 狀態(tài)列表,服務(wù)器在發(fā)送狀態(tài)通知時(shí),只傳遞客戶端請(qǐng)求的狀態(tài)項(xiàng),優(yōu)選地,步驟S31中的 訂閱請(qǐng)求包中還包括狀態(tài)列表,所述狀態(tài)列表為所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。用戶登錄時(shí),如果用戶好友很多,服務(wù)器可能會(huì)向客戶端發(fā)送大量狀態(tài)數(shù)據(jù),如果 每個(gè)狀態(tài)通知包只有一個(gè)好友的信息,會(huì)造成消息頭的額外流量開銷。如果全部好友的狀 態(tài)都在一個(gè)包里發(fā)送,則又會(huì)導(dǎo)致一個(gè)包過(guò)大,不利于網(wǎng)絡(luò)傳輸。因此,使用隊(duì)列累積到一 定的數(shù)量就組包發(fā)送,該數(shù)量可根據(jù)業(yè)務(wù)情況進(jìn)行調(diào)整,步驟S3中,若所述被請(qǐng)求用戶的 數(shù)量大于預(yù)定數(shù)量(本實(shí)施方式中,預(yù)定數(shù)量為50個(gè)),所述服務(wù)器使所述被請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包發(fā)送一次,若所述被請(qǐng)求用戶的數(shù)量小于等于預(yù)定數(shù)量時(shí),直接 打包發(fā)送,以下例來(lái)說(shuō)明步驟S3中的發(fā)送若被請(qǐng)求用戶的數(shù)量為110個(gè),預(yù)定數(shù)量為50 個(gè),則首先將50個(gè)被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)進(jìn)行打包發(fā)送一次,再將50個(gè) 被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)進(jìn)行打包發(fā)送一次,最后將剩余的10個(gè)被請(qǐng)求 用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)進(jìn)行打包發(fā)送一次;若被請(qǐng)求用戶的數(shù)量為30個(gè),預(yù)定 數(shù)量為50個(gè),則直接將30個(gè)被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)進(jìn)行打包發(fā)送。本發(fā)明還公開了一種狀態(tài)通知系統(tǒng),如圖2所示,包括發(fā)送模塊,用于修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器;判斷模塊,用于所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根 據(jù)所述修改的狀態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶 的狀態(tài)集,并為所述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則將所述修改的狀態(tài)項(xiàng)作為狀態(tài) 集,所述持久類狀態(tài)為設(shè)置后一直有效的狀態(tài),所述狀態(tài)集中包括若干狀態(tài)項(xiàng);打包模塊,用于所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服 務(wù)器中被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知 包發(fā)送至所述請(qǐng)求客戶端;解析保存模塊,用于所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知 包進(jìn)行解析,判斷所述狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩 存保存所述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩 存不保存所述狀態(tài)集。所述系統(tǒng)還包括顯示模塊,用于請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀 態(tài)集所包括的所有狀態(tài)項(xiàng)。所述打包模塊中具體包括打包子模塊,用于所述請(qǐng)求客戶端登錄時(shí),將所述請(qǐng)求客戶端的本地緩存中的狀 態(tài)版本號(hào)打包生成訂閱請(qǐng)求包,并將所述訂閱請(qǐng)求包發(fā)送至所述服務(wù)器;解析判斷子模塊,用于所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng) 求包中是否存在狀態(tài)版本號(hào);發(fā)送子模塊,用于若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶 的狀態(tài)集對(duì)應(yīng)的狀態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則 將所述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知 包發(fā)送至所述請(qǐng)求客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包 生成狀態(tài)通知包,并將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端。所述打包子模塊中的訂閱請(qǐng)求包中還包括狀態(tài)列表,所述狀態(tài)列表為所述請(qǐng)求客 戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。所述打包模塊中,若所述被請(qǐng)求用戶的數(shù)量大于預(yù)定數(shù)量,所述服務(wù)器使所述被 請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包發(fā)送一次,若所述被請(qǐng)求用戶的數(shù)量小于等于預(yù) 定數(shù)量時(shí),直接打包發(fā)送。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通 技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種狀態(tài)通知方法,其特征在于,包括以下步驟51修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器;52所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根據(jù)所述修改的狀 態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶的狀態(tài)集,并為所 述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則將所述修改的狀態(tài)項(xiàng)作為狀態(tài)集,所述持久類狀 態(tài)為設(shè)置后一直有效的狀態(tài),所述狀態(tài)集中包括若干狀態(tài)項(xiàng);53所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服務(wù)器中被請(qǐng)求用 戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所述請(qǐng) 求客戶端;S4:所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知包進(jìn)行解析,判斷所述 狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩存保存所述被請(qǐng)求用 戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩存不保存所述狀態(tài)集。
2.如權(quán)利要求1所述的狀態(tài)通知方法,其特征在于,步驟S4之后還包括步驟S5 請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀態(tài)集所包括的所有狀態(tài)項(xiàng)。
3.如權(quán)利要求1所述的狀態(tài)通知方法,其特征在于,步驟S3中,具體包括步驟S31 所述請(qǐng)求客戶端登錄時(shí),將所述請(qǐng)求客戶端的本地緩存中的狀態(tài)版本號(hào)打包生成 訂閱請(qǐng)求包,并將所述訂閱請(qǐng)求包發(fā)送至所述服務(wù)器;S32:所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng)求包中是否存在狀態(tài)版 本號(hào);S33 若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶的狀態(tài)集對(duì)應(yīng)的狀 態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則將所述被請(qǐng)求用戶 的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā)送至所述請(qǐng)求 客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并 將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端。
4.如權(quán)利要求3所述的狀態(tài)通知方法,其特征在于,步驟S31中的訂閱請(qǐng)求包中還包括 狀態(tài)列表,所述狀態(tài)列表為所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。
5.如權(quán)利要求1所述的狀態(tài)通知方法,其特征在于,步驟S3中,若所述被請(qǐng)求用戶的數(shù) 量大于預(yù)定數(shù)量,所述服務(wù)器使所述被請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包發(fā)送一次, 若所述被請(qǐng)求用戶的數(shù)量小于等于預(yù)定數(shù)量時(shí),直接打包發(fā)送。
6.一種狀態(tài)通知系統(tǒng),其特征在于,包括發(fā)送模塊,用于修改了自身狀態(tài)的客戶端將修改的狀態(tài)項(xiàng)發(fā)送至服務(wù)器;判斷模塊,用于所述服務(wù)器判斷所述修改的狀態(tài)項(xiàng)是否為持久類狀態(tài),若是,則根據(jù)所 述修改的狀態(tài)項(xiàng)更新所述服務(wù)器中存儲(chǔ)的與所述修改了自身狀態(tài)的客戶端對(duì)應(yīng)用戶的狀 態(tài)集,并為所述狀態(tài)集分配對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則將所述修改的狀態(tài)項(xiàng)作為狀態(tài)集, 所述持久類狀態(tài)為設(shè)置后一直有效的狀態(tài),所述狀態(tài)集中包括若干狀態(tài)項(xiàng);打包模塊,用于所述服務(wù)器根據(jù)請(qǐng)求客戶端登錄時(shí)生成的訂閱請(qǐng)求包,將所述服務(wù)器 中被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā) 送至所述請(qǐng)求客戶端;解析保存模塊,用于所述請(qǐng)求客戶端接收到所述狀態(tài)通知包后,對(duì)所述狀態(tài)通知包進(jìn) 行解析,判斷所述狀態(tài)通知包中是否有狀態(tài)版本號(hào),若是,則所述請(qǐng)求客戶端的本地緩存保 存所述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào),若否,則所述請(qǐng)求客戶端的本地緩存不 保存所述狀態(tài)集。
7.如權(quán)利要求6所述的狀態(tài)通知系統(tǒng),其特征在于,還包括顯示模塊,用于請(qǐng)求客戶端顯示解析出的所述被請(qǐng)求用戶的狀態(tài)集所包括的所有狀態(tài)項(xiàng)。
8.如權(quán)利要求6所述的狀態(tài)通知系統(tǒng),其特征在于,所述打包模塊中具體包括打包子模塊,用于所述請(qǐng)求客戶端登錄時(shí),將所述請(qǐng)求客戶端的本地緩存中的狀態(tài)版 本號(hào)打包生成訂閱請(qǐng)求包,并將所述訂閱請(qǐng)求包發(fā)送至所述服務(wù)器;解析判斷子模塊,用于所述服務(wù)器對(duì)所述訂閱請(qǐng)求包進(jìn)行解析,判斷所述訂閱請(qǐng)求包 中是否存在狀態(tài)版本號(hào);發(fā)送子模塊,用于若是,則比較訂閱請(qǐng)求包中的狀態(tài)版本號(hào)和與所述被請(qǐng)求用戶的狀 態(tài)集對(duì)應(yīng)的狀態(tài)版本號(hào),若相同,則不發(fā)送狀態(tài)通知包至所述請(qǐng)求客戶端,若不同,則將所 述被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成狀態(tài)通知包,并將所述狀態(tài)通知包發(fā) 送至所述請(qǐng)求客戶端;若否,則將所有被請(qǐng)求用戶的狀態(tài)集和對(duì)應(yīng)的狀態(tài)版本號(hào)打包生成 狀態(tài)通知包,并將狀態(tài)通知包發(fā)送至所述請(qǐng)求客戶端。
9.如權(quán)利要求8所述的狀態(tài)通知系統(tǒng),其特征在于,所述打包子模塊中的訂閱請(qǐng)求包 中還包括狀態(tài)列表,所述狀態(tài)列表為所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng);所述狀態(tài)通知包中的被請(qǐng)求用戶的狀態(tài)集只包括所述請(qǐng)求客戶端請(qǐng)求的狀態(tài)項(xiàng)。
10.如權(quán)利要求6所述的狀態(tài)通知系統(tǒng),其特征在于,所述打包模塊中,若所述被請(qǐng)求 用戶的數(shù)量大于預(yù)定數(shù)量,所述服務(wù)器使所述被請(qǐng)求用戶的數(shù)量累計(jì)至預(yù)定數(shù)量時(shí),打包 發(fā)送一次,若所述被請(qǐng)求用戶的數(shù)量小于等于預(yù)定數(shù)量時(shí),直接打包發(fā)送。
全文摘要
本發(fā)明公開了一種狀態(tài)通知方法,通過(guò)客戶端對(duì)變更頻度低的持久類狀態(tài)進(jìn)行緩存,客戶端登錄時(shí),向服務(wù)器提交緩存的狀態(tài)版本號(hào)信息,服務(wù)器通過(guò)版本號(hào)控制緩存的更新,只向客戶端同步新變更的狀態(tài)。本發(fā)明提供了狀態(tài)通知的一種優(yōu)化實(shí)現(xiàn)方法,解決了客戶端登錄時(shí),服務(wù)器向客戶端發(fā)送的初始狀態(tài)通信量、網(wǎng)絡(luò)流量過(guò)大的問(wèn)題,本發(fā)明還公開了一種狀態(tài)通知系統(tǒng),包括發(fā)送模塊、判斷模塊、打包模塊和解析保存模塊。
文檔編號(hào)H04L29/08GK102111345SQ20101062287
公開日2011年6月29日 申請(qǐng)日期2010年12月29日 優(yōu)先權(quán)日2010年12月29日
發(fā)明者唐嶠木 申請(qǐng)人:北京神州泰岳軟件股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
鸡东县| 黄浦区| 深圳市| 玉屏| 长岭县| 辰溪县| 康保县| 封开县| 南和县| 汨罗市| 绥德县| 天津市| 会昌县| 林芝县| 巴彦淖尔市| 万州区| 夏河县| 宝坻区| 无为县| 永顺县| 曲松县| 太仆寺旗| 沾化县| 沙坪坝区| 长沙县| 遂宁市| 嵩明县| 水富县| 武定县| 永善县| 九龙坡区| 怀远县| 太和县| 通河县| 灵石县| 平利县| 自治县| 邻水| 岳阳市| 天祝| 苍溪县|