本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種客戶端事件處理系統(tǒng)及方法。
背景技術(shù):
目前,客戶端事件類型有很多種,例如設(shè)備的屏幕,接收到觸摸的動(dòng)作時(shí),屏幕驅(qū)動(dòng)把壓力信號(hào)(包括壓力大小,壓力位置等)傳遞給系統(tǒng)底層,然后操作系統(tǒng)經(jīng)過(guò)一系列的處理,把觸摸事件一層一層的向上傳遞,最終事件會(huì)被準(zhǔn)確的傳遞到產(chǎn)生事件的對(duì)象上,系統(tǒng)會(huì)遍歷每一個(gè)view對(duì)象,然后計(jì)算觸摸點(diǎn)在哪一個(gè)view中?,F(xiàn)有技術(shù)并沒(méi)有對(duì)客戶端事件進(jìn)行分類處理,且所有客戶端事件均是通過(guò)同一處理系統(tǒng)進(jìn)行處理,因此處理速度慢、處理效率也不高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種客戶端事件處理系統(tǒng)及方法統(tǒng),提供了客戶端事件的處理速度和質(zhì)量。
本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種客戶端事件處理系統(tǒng),包括:客戶端和連接服務(wù)器,所述連接服務(wù)器包括客戶端事件收發(fā)模和會(huì)話控制模型;
所述客戶端,用于向所述連接服務(wù)器發(fā)送客戶端事件;
所述客戶端事件收發(fā)模塊,用于在接收到所述客戶端事件后,根據(jù)所述客戶端事件的類型,判斷所述客戶端對(duì)應(yīng)的所述會(huì)話控制模型是否有所述客戶端事件對(duì)應(yīng)的處理方法,若有,將所述客戶端事件發(fā)送至所述會(huì)話控制模型;
所述會(huì)話控制模型,用于接收并處理所述客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至所述客戶端,其中,一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型。
本發(fā)明的有益效果是:一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型,客戶端連接上連接服務(wù)器時(shí),該客戶端有一個(gè)用戶id,連接服務(wù)器根據(jù)該用戶id可對(duì)應(yīng)找到該客戶端對(duì)應(yīng)的會(huì)話控制模型,每個(gè)客戶端發(fā)送的客戶端事件,在其相應(yīng)的會(huì)話控制模型得到處理,并返回處理結(jié)果至該客戶端。本發(fā)明提高了客戶端事件的處理速度和質(zhì)量。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
進(jìn)一步,所述客戶端事件包括:注冊(cè)類事件,遠(yuǎn)程調(diào)用類事件和緩存處理類事件。
進(jìn)一步,所述客戶端事件收發(fā)模塊具體用于:
在接收到所述客戶端事件后,判斷所述客戶端事件的類型,若所述客戶端事件為緩存處理類事件信息,將所述客戶端事件發(fā)送至?xí)捒刂颇P?;若所述客戶端事件為遠(yuǎn)程調(diào)用類事件,則判斷所述系統(tǒng)是否有所述客戶端事件對(duì)應(yīng)的遠(yuǎn)程調(diào)用類事件處理器,若有,調(diào)用所述系統(tǒng)中的所述遠(yuǎn)程調(diào)用類事件處理器處理所述客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至客戶端。
進(jìn)一步,所述連接服務(wù)器還包括注冊(cè)模塊和會(huì)話控制模型創(chuàng)建模塊;
所述注冊(cè)模塊,用于在接收到所述客戶端事件且所述客戶端事件為注冊(cè)類事件時(shí),調(diào)用登陸處理方法處理所述注冊(cè)類事件,得到并向所述客戶端返回登陸處理結(jié)果;
所述會(huì)話控制模型創(chuàng)建模塊,用于在所述登陸處理結(jié)果為成功時(shí),創(chuàng)建所述會(huì)話控制模型,所述會(huì)話控制模型包括視圖數(shù)據(jù)模型和直接事件處理器。
進(jìn)一步,所述會(huì)話控制模型具體用于:
接收所述客戶端事件,并將所述客戶端事件分發(fā)給所述視圖數(shù)據(jù)模型和所述直接事件處理器進(jìn)行處理;所述直接事件處理器處理所述客戶端事件,得到第一處理結(jié)果,封裝所述第一處理結(jié)果為直接類消息,并將所述直接類消息存儲(chǔ)于事件消息隊(duì)列中,通過(guò)更新線程推送所述直接類消息至所述客戶端;所述視圖數(shù)據(jù)模型處理所述客戶端事件,得到第二處理結(jié)果,封裝所述第二處理結(jié)果為模型類消息,通過(guò)更新線程推送所述模型類消息至所述客戶端,其中,所述第二處理結(jié)果為視圖變更內(nèi)容。
本發(fā)明還提供了一種客戶端事件方法,包括:
步驟1、客戶端向連接服務(wù)器發(fā)送客戶端事件;
步驟2、所述連接服務(wù)器包括的客戶端事件收發(fā)模塊在接收到所述客戶端事件后,根據(jù)所述客戶端事件的類型,判斷所述連接服務(wù)器包括的且所述客戶端對(duì)應(yīng)的會(huì)話控制模型是否有所述客戶端事件對(duì)應(yīng)的處理方法,若有,將所述客戶端事件發(fā)送至所述會(huì)話控制模型;
步驟3、所述會(huì)話控制模型接收并處理所述客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至所述客戶端,
其中,一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型。
本發(fā)明的有益效果是:一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型,每個(gè)客戶端發(fā)送的客戶端事件,在其相應(yīng)的會(huì)話控制模型得到處理,并返回處理結(jié)果至該客戶端。本發(fā)明提高了客戶端事件的處理速度和質(zhì)量。
進(jìn)一步,所述客戶端事件包括:注冊(cè)類事件,遠(yuǎn)程調(diào)用類事件和模型傳遞類事件。
進(jìn)一步,所述步驟2包括:
步驟2.1、在接收到所述客戶端事件信息后,判斷所述客戶端事件的類型;
步驟2.2、若所述客戶端事件為緩存處理類事件,將所述客戶端事件發(fā)送至所述會(huì)話控制模型;
步驟2.3、若所述客戶端事件為遠(yuǎn)程調(diào)用類事件,則判斷所述連接服務(wù)器是否有所述客戶端事件對(duì)應(yīng)的遠(yuǎn)程調(diào)用類事件處理器;
步驟2.4、若有,則調(diào)用所述遠(yuǎn)程調(diào)用類事件處理器處理所述客戶端事件;
步驟2.5、得到并發(fā)送客戶端事件處理結(jié)果至所述客戶端。
進(jìn)一步,所述步驟1還包括:
所述連接服務(wù)器包括的注冊(cè)模塊在接收到所述客戶端事件且所述客戶端事件為注冊(cè)類事件時(shí),調(diào)用登陸處理方法處理所述注冊(cè)類事件,得到并向所述客戶端返回登陸處理結(jié)果;所述連接服務(wù)器包括的會(huì)話控制模型創(chuàng)建模塊在所述登陸處理結(jié)果為成功時(shí),創(chuàng)建所述會(huì)話控制模型,所述會(huì)話控制模型包括視圖數(shù)據(jù)模型和直接事件處理器。
進(jìn)一步,所述步驟3包括:
步驟3.1、接收所述客戶端事件;
步驟3.2、將所述客戶端事件分發(fā)給所述視圖數(shù)據(jù)模型和所述直接事件處理器進(jìn)行處理;
步驟3.3、所述直接事件處理器處理所述客戶端事件,得到第一處理結(jié)果;
步驟3.4、封裝所述第一處理結(jié)果為直接類消息,并將所述直接類消息存儲(chǔ)于事件消息隊(duì)列中;
步驟3.5、通過(guò)更新線程推送所述直接類消息至所述客戶端;
步驟3.6、所述視圖數(shù)據(jù)模型處理所述客戶端事件,得到第二處理結(jié)果;
步驟3.7、封裝所述第二處理結(jié)果為模型類消息;
步驟3.8、通過(guò)更新線程推送所述模型類消息至所述客戶端,其中,所述第二處理結(jié)果為視圖變更內(nèi)容。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例一提供的一種客戶端事件處理系統(tǒng)的示意性結(jié)構(gòu)圖;
圖2為本發(fā)明實(shí)施例二提供的一種客戶端事件處理系統(tǒng)的示意性結(jié)構(gòu)圖;
圖3為本發(fā)明實(shí)施例三提供的一種客戶端事件處理方法的流程示意圖;
圖4為圖3中的步驟210的流程示意圖;
圖5為圖3中的步驟220的流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
實(shí)施例一
一種客戶端事件處理系統(tǒng)100,如圖1所示,包括:客戶端和連接服務(wù)器,連接服務(wù)器包括客戶端事件收發(fā)模塊和會(huì)話控制模型。其中,
客戶端,用于向連接服務(wù)器發(fā)送客戶端事件。
客戶端事件收發(fā)模塊,用于在接收到客戶端事件后,根據(jù)客戶端事件的類型,判斷客戶端對(duì)應(yīng)的會(huì)話控制模型是否有客戶端事件對(duì)應(yīng)的處理方法,若有,將客戶端事件發(fā)送至?xí)捒刂颇P汀?/p>
會(huì)話控制模型,用于接收并處理客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至客戶端,
其中,一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型,客戶端可有多個(gè),相應(yīng)的會(huì)話控制模型有多個(gè)。
一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型,客戶端連接上連接服務(wù)器時(shí),該客戶端有一個(gè)用戶id,連接服務(wù)器根據(jù)該用戶id可對(duì)應(yīng)找到該客戶端對(duì)應(yīng)的會(huì)話控制模型,每個(gè)客戶端發(fā)送的客戶端事件,當(dāng)在其相應(yīng)的會(huì)話控制模型得到處理時(shí),會(huì)返回處理結(jié)果至該客戶端。本發(fā)明提高了客戶端事件的處理速度和質(zhì)量。
另外,需要說(shuō)明的是,會(huì)話控制模型中有多個(gè)獨(dú)立的處理線程,部分獨(dú)立處理線程用于對(duì)接收到的事件進(jìn)行處理,部分獨(dú)立處理線程用于向客戶端發(fā)送處理結(jié)果。
實(shí)施例二
一種客戶端事件處理系統(tǒng)100,如圖2所示,包括:客戶端和連接服務(wù)器,連接服務(wù)器包括注冊(cè)模塊、會(huì)話控制模型創(chuàng)建模塊、客戶端事件收發(fā)模塊和會(huì)話控制模型。其中,
客戶端,用于向連接服務(wù)器發(fā)送客戶端事件。
注冊(cè)模塊,用于在接收到客戶端事件且該客戶端事件為注冊(cè)類事件時(shí),調(diào)用登陸處理方法處理該注冊(cè)類事件,得到并向客戶端返回登陸處理結(jié)果。
會(huì)話控制模型創(chuàng)建模塊,用于在登陸處理結(jié)果為成功時(shí),創(chuàng)建會(huì)話控制模型,會(huì)話控制模型包括視圖數(shù)據(jù)模型和直接事件處理器。
客戶端事件收發(fā)模塊,用于在接收到上述客戶端事件后,根據(jù)客戶端事件的類型,判斷客戶端對(duì)應(yīng)的會(huì)話控制模型是否有客戶端事件對(duì)應(yīng)的處理方法,若有,將客戶端事件發(fā)送至?xí)捒刂颇P汀?/p>
會(huì)話控制模型,用于接收并處理客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至客戶端,
其中,一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型,且客戶端事件包括:注冊(cè)類事件,遠(yuǎn)程調(diào)用類事件和緩存處理類事件。
客戶端事件收發(fā)模塊具體用于:
在接收到客戶端發(fā)送的客戶端事件后,判斷客戶端事件的類型,若客戶端事件為緩存處理類事件信息,將客戶端事件發(fā)送至?xí)捒刂颇P?;若客戶端事件為遠(yuǎn)程調(diào)用類事件,則判斷連接服務(wù)器是否有客戶端事件對(duì)應(yīng)的遠(yuǎn)程調(diào)用類事件處理器,若有,調(diào)用上述遠(yuǎn)程調(diào)用類事件處理器處理該客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至客戶端。
會(huì)話控制模型具體用于:
接收客戶端事件,并將客戶端事件分發(fā)給視圖數(shù)據(jù)模型和直接事件處理器進(jìn)行處理,直接事件處理器處理客戶端事件,得到第一處理結(jié)果,封裝第一處理結(jié)果為直接類消息(簡(jiǎn)稱,d消息),并將直接類消息存儲(chǔ)于事件消息隊(duì)列中,通過(guò)更新線程推送直接類消息至客戶端;視圖數(shù)據(jù)模型處理客戶端事件,得到第二處理結(jié)果,封裝第二處理結(jié)果為模型類消息(簡(jiǎn)稱,m消息),通過(guò)更新線程推送模型類消息至客戶端,其中,第二處理結(jié)果為視圖變更內(nèi)容。
需要說(shuō)明的是,一個(gè)會(huì)話控制模型又包括多個(gè)視圖數(shù)據(jù)模型,會(huì)話控制模型接收并將客戶端事件發(fā)送至所有的視圖數(shù)據(jù)模型,所有的視圖數(shù)據(jù)模型接收并處理客戶端事件,得到第一處理結(jié)果,將第一處理結(jié)果發(fā)送至?xí)捒刂颇P蛯?duì)應(yīng)的客戶端,其中,第一處理結(jié)果為視圖變更內(nèi)容。
需要說(shuō)明的是,上述視圖變更內(nèi)容為兩次視圖的差異部分,例如,a客戶端事件發(fā)送至?xí)捒刂颇P?,?huì)話控制模型中的試圖數(shù)據(jù)模型對(duì)該客戶端事件進(jìn)行處理,得到a結(jié)果,當(dāng)a客戶端事件再次發(fā)送至?xí)捒刂颇P?,且?huì)話控制模型再次接收到該客戶端事件時(shí),由試圖數(shù)據(jù)模型進(jìn)行處理,處理得到b結(jié)果,a結(jié)果和b結(jié)果之間的差異,即為視圖變更內(nèi)容,會(huì)話控制模型會(huì)將該變更內(nèi)容封裝為m事件,通過(guò)更新線程推送至客戶端。
另外,會(huì)話控制模型不會(huì)注冊(cè)直接事件處理器,緩存引擎會(huì)注冊(cè)直接事件處理器,且直接事件處理器僅在緩存引擎中注冊(cè),會(huì)話控制模型會(huì)在客戶端登陸后,從緩存引擎中拷貝該直接事件處理器,上述直接事件處理器只有在會(huì)話控制模型中進(jìn)行事件的處理。
實(shí)施例三
一種客戶端事件處理方法200,如圖3所示,包括:
步驟210、客戶端向連接服務(wù)器發(fā)送客戶端事件。
步驟220、連接服務(wù)器包括的客戶端事件收發(fā)模塊在接收到客戶端事件后,根據(jù)客戶端事件的類型,判斷連接服務(wù)器包括的且客戶端對(duì)應(yīng)的會(huì)話控制模型是否有客戶端事件對(duì)應(yīng)的處理方法,若有,將客戶端事件發(fā)送至?xí)捒刂颇P汀?/p>
步驟230、會(huì)話控制模型接收并處理上述客戶端事件,得到并發(fā)送客戶端事件處理結(jié)果至上述客戶端,其中,一個(gè)客戶端對(duì)應(yīng)一個(gè)會(huì)話控制模型。
客戶端事件包括:注冊(cè)類事件,遠(yuǎn)程調(diào)用類事件和模型傳遞類事件。
其中,步驟210還包括:
連接服務(wù)器包括的注冊(cè)模塊在接收到客戶端事件且客戶端事件為注冊(cè)類事件時(shí),調(diào)用登陸處理方法處理注冊(cè)類事件,得到并向客戶端返回登陸處理結(jié)果;連接服務(wù)器包括的會(huì)話控制模型創(chuàng)建模塊在登陸處理結(jié)果為成功時(shí),創(chuàng)建會(huì)話控制模型,會(huì)話控制模型包括視圖數(shù)據(jù)模型和直接事件處理器。
如圖4所示,步驟220具體包括:
步驟221、在接收到客戶端事件后,判斷客戶端事件的類型。
步驟222、若客戶端事件為緩存處理類事件,將客戶端事件發(fā)送至?xí)捒刂颇P汀?/p>
步驟223、若客戶端事件為遠(yuǎn)程調(diào)用類事件,則判斷連接服務(wù)器是否有客戶端事件對(duì)應(yīng)的遠(yuǎn)程調(diào)用類事件處理器。
步驟224、若有,則調(diào)用該遠(yuǎn)程調(diào)用類事件處理器處理客戶端事件。
步驟225、得到并發(fā)送客戶端事件處理結(jié)果至客戶端。
如圖5所示,上述步驟230具體包括:
步驟231、接收客戶端事件。
步驟232、將客戶端事件分發(fā)給視圖數(shù)據(jù)模型和直接事件處理器進(jìn)行處理。
步驟233、直接事件處理器處理客戶端事件,得到第一處理結(jié)果。
步驟234、封裝第一處理結(jié)果為直接類消息,并將直接類消息存儲(chǔ)于事件消息隊(duì)列中。
步驟235、通過(guò)更新線程推送直接類消息至客戶端。
步驟236、視圖數(shù)據(jù)模型處理客戶端事件,得到第二處理結(jié)果;
步驟237、封裝第二處理結(jié)果為模型類消息;
步驟238、通過(guò)更新線程推送模型類消息至客戶端,其中,第二處理結(jié)果為視圖變更內(nèi)容。
可以理解的,步驟233~步驟235與步驟236~步驟238可并列同步進(jìn)行,其執(zhí)行先后順序不做限制。
另外,需要說(shuō)明的是,客戶端事件包括:注冊(cè)類事件,遠(yuǎn)程調(diào)用類事件和緩存處理類事件。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。