本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種在即時通訊工具中顯示好友登錄狀態(tài)的方法及系統(tǒng)。
背景技術(shù):
在即時通訊系統(tǒng)中,每個用戶上線時都需要獲取自身好友的登錄狀態(tài)。登錄狀態(tài)一般包括好友的在線狀態(tài)和登錄資源,其中登錄資源是指好友使用何種終端來登錄即時通訊服務器,如:手機、電腦或者web頁面等。通過在用戶的客戶端顯示好友的登錄狀態(tài),可以提供更好的用戶體驗。
為了實現(xiàn)這個功能,在用戶量級別不同時面臨的技術(shù)難度是不同的。例如:在系統(tǒng)總用戶數(shù)不是很多的時候,所有的數(shù)據(jù)包括用戶登錄狀態(tài)信息都放在一臺關(guān)系型數(shù)據(jù)庫中就可以了,這樣直接用一次SQL查詢就可以查詢到某一用戶所有好友的登錄狀態(tài)。但是當用戶數(shù)量達到上億級時,如QQ,如果繼續(xù)將用戶的登錄狀態(tài)信息保存在關(guān)系型數(shù)據(jù)庫中,由于用戶上下線都需要訪問數(shù)據(jù)庫來更新登錄狀態(tài),而用戶的登錄狀態(tài)是經(jīng)常變化的,尤其是在移動互聯(lián)網(wǎng)中,用戶上下線更為頻繁,由此會給數(shù)據(jù)庫帶來極大的壓力,可能把數(shù)據(jù)庫壓垮,導致整個系統(tǒng)泵機。
針對上述情況,現(xiàn)有技術(shù)中提出了另一種方案是實時地在即時通訊服務器的內(nèi)存里給每一個用戶維護一個好友列表,在好友列表中實時地更新各好友的登錄狀態(tài),這樣雖然可以做到用戶客戶端一請求好友列表數(shù)據(jù),就能馬上返回結(jié)果,無需查詢數(shù)據(jù)庫,但是這種方案占用很大的內(nèi)存量,并且用戶在上線或下線時,有多少個好友內(nèi)存就要進行多少次更新,好友數(shù)越多更新的次數(shù)也就越多,這樣假如有十萬個用戶同時登錄,每個用戶有200個好友,那內(nèi)存將面臨著2000萬次的更新,并且好友的登錄可能分布于不同的即時通訊服務器,這樣還面臨著跨服務器更新內(nèi)存,仍然會給整個系統(tǒng)帶來很大壓力。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例的目的在于提供一種在即時通訊工具中顯示好友登錄狀態(tài)的方法及系統(tǒng),旨在解決現(xiàn)有顯示好友登錄狀態(tài)的方式存在的需要在內(nèi)存中實時維護好友的登錄狀態(tài),會占用很大的內(nèi)存量,并且當用戶數(shù)量較多時,仍然會給整個系統(tǒng)帶來很大壓力的問題。
本發(fā)明實施例是這樣實現(xiàn)的,一種在即時通訊工具中顯示好友登錄狀態(tài)的方法,包括:
當用戶登錄所述即時通訊工具的客戶端時,用戶所在的即時通訊服務器根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài);
所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài);
所述用戶所在的即時通訊服務器將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài)。
本發(fā)明實施例的另一目的在于提供一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng),其中,所述系統(tǒng)位于用戶所在的即時通訊服務器中,所述系統(tǒng)包括:
好友列表獲取單元,用于當用戶登錄所述即時通訊工具的客戶端時,根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài);
好友登錄狀態(tài)獲取單元,用于根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài);
好友登錄狀態(tài)更新單元,用于將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài)。
實施本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法及系統(tǒng)具有以下有益效果:
本發(fā)明實施例通過當用戶登錄所述即時通訊工具的客戶端時,用戶所在的即時通訊服務器根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài);所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài);所述用戶所在的即時通訊服務器將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài),從而無需在即時通訊服務器的內(nèi)存中實時維護好友的登錄狀態(tài)即可使用戶在登錄時及時獲取并顯示好友的登錄狀態(tài),大大減少了內(nèi)存的占用量,并且無需頻繁的更新即時通訊服務器的內(nèi)存,減輕了整個即時通訊系統(tǒng)的運行壓力。
附圖說明
圖1是本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法的示意流程圖;
圖2是本發(fā)明另一實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法的示意流程圖;
圖3是本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)的示意性框圖;
圖4是本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)中好友登錄狀態(tài)獲取單元的示意性框圖;
圖5是本發(fā)明另一實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)的示意性框圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1是本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法的示意流程圖。參見圖1所示,本實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法,包括:
在S101中,當用戶登錄所述即時通訊工具的客戶端時,用戶所在的即時通訊服務器根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài)。
在本實施例中,所述登錄狀態(tài)包括在線狀態(tài)和登錄資源狀態(tài)。進一步的,所述在線狀態(tài)包括但不限于在線、離線、忙碌、離開以及自定義狀態(tài),所述登錄資源狀態(tài)包括但不限于未知、手機、電腦、智能電視以及網(wǎng)頁web。
在本實施例中,所述默認狀態(tài)中的所述在線狀態(tài)為離線,所述登錄資源狀態(tài)為未知。在本實施例中,所述用戶的客戶端可以通過變換好友圖標或者通過在好友圖標后的預設(shè)區(qū)域內(nèi)添加文字的方式來顯示好友的登錄狀態(tài)。
在S102中,所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài)。
在本實施例中,步驟S102具體包括:
所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢所述好友所在的即時通訊服務器;
若所述好友與所述用戶分別位于不同的即時通訊服務器,則所述用戶所在的即時通訊服務器將用戶的上線通知信息發(fā)送至所述好友所在的即時通訊服務器,并接收所述好友所在即時通訊服務器根據(jù)所述用戶的上線通知信息返回的應答信息,所述應答信息包括所述用戶好友當前的登錄狀態(tài);或者,
若所述用戶好友與所述用戶位于同一即時通訊服務器,則所述用戶所在的即時通訊服務器直接在自身數(shù)據(jù)庫中查找所述好友當前的登錄狀態(tài)。
在本實施例中,所述好友列表中包括好友的登錄賬號信息,所述好友的登錄賬號信息包括好友的昵稱、賬號ID以及賬號ID所在的即時通訊服務器,所述好友的賬號ID所在的即時通訊服務器即為好友所在的即時通訊服務器。
在本實施例中,用戶上線或者改變登錄狀態(tài)時均會通過用戶的客戶端將用戶當前的登錄狀態(tài)發(fā)送至用戶所在的即時通訊服務器進行存儲,同樣好友上線或者改變登錄狀態(tài)時,好友的客戶端也會將好友當前的登錄狀態(tài)發(fā)送至好友所在的即時通訊服務器進行存儲。進一步的,用戶所在的即時通訊服務器和好友所在的即時通訊服務器可能為同一個服務器,也可能為兩個不同的服務器,因此,用戶所在的即時通訊服務器在查找到好友所在的即時通訊服務器時,會判斷好友所在的即時通訊服務器的IP地址是否與用戶所在的即時通訊服務器的IP地址相同,若相同,則說明兩者位于同一即時通訊服務器,此時用戶所在的即時通訊服務器可直接在自身數(shù)據(jù)庫中查詢好友當前的登錄狀態(tài);反之,若不相同,則說明兩者分別位于不同的即時通訊服務器中,此時由用戶所在的通訊服務器向好友所在的通訊服務器發(fā)送用戶的上線通知信息,其中用戶的上線通知信息包括用戶當前的登錄狀態(tài)、用戶的賬戶ID以及好友的賬戶ID,使好友所在的通訊服務器根據(jù)所述用戶的上線通知信息中好友的賬戶ID查詢好友當前的登錄狀態(tài),根據(jù)好友當前的登錄狀態(tài)作為應答信息返回至用戶所在的即時通訊服務器。
在S103中,所述用戶所在的即時通訊服務器將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài)。
在本實施例中,所述用戶的客戶端在接收到所述用戶所在即時通訊服務器轉(zhuǎn)發(fā)的好友當前的登錄狀態(tài)時,并根據(jù)好友當前的登錄狀態(tài)更新自身好友列表中該好友的登錄狀態(tài)。
以上可以看出,本實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法通過當用戶登錄所述即時通訊工具的客戶端時,用戶所在的即時通訊服務器根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài);所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài);所述用戶所在的即時通訊服務器將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài),從而無需在用戶所在的即時通訊服務器的內(nèi)存中實時維護好友的登錄狀態(tài)即可使用戶在登錄時及時獲取并顯示好友的登錄狀態(tài),大大減少了內(nèi)存的占用量,并且無需頻繁的更新即時通訊服務器的內(nèi)存,減輕了整個即時通訊系統(tǒng)的運行壓力。
圖2是本發(fā)明另一實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法的示意流程圖。參見圖2所示,相對于上一實施例,本實施例提供的所述方法在所述用戶所在的即時通訊服務器根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài)之后還包括:
在S203中,所述用戶所在的即時通訊服務器通過所述好友所在的即時通訊服務器根據(jù)所述好友當前的登錄狀態(tài)向在線好友的客戶端發(fā)送用戶的上線通知信息,使所述在線好友的客戶端根據(jù)所述上線通知信息更新所述用戶的登錄狀態(tài)。
在本實施例中,所述好友所在的即時通訊服務器在獲取到好友的登錄狀態(tài)時,會根據(jù)所述登錄狀態(tài)判斷所述好友是否在線,若在線,則會將所述用戶所在的即時通訊服務器接收到的用戶的客戶端發(fā)送的用戶的上線通知信息轉(zhuǎn)發(fā)至所述好友的客戶端,使所述好友的客戶端根據(jù)用戶的上線通知信息更新自身好友列表中用戶的登錄狀態(tài)。
進一步的,相對于上一實施例,在本實施例中,所述用戶所在的即時通訊服務器將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài)之后還包括:
在S205中,當用戶的登錄狀態(tài)發(fā)生改變時,所述用戶所在的即時通訊服務器重新獲取用戶當前的登錄狀態(tài),并將用戶當前的登錄狀態(tài)通過所述好友所在的即時通訊服務器發(fā)送至在線好友的客戶端,使所述在線好友的客戶端根據(jù)所述用戶當前的登錄狀態(tài)更新自身好友列表中所述用戶的登錄狀態(tài)。
在本實施例中,當用戶的登錄狀態(tài)發(fā)生改變時,例如:當用戶的在線狀態(tài)發(fā)生改變或者登錄資源狀態(tài)發(fā)生改變時,所述用戶所在的即時通訊服務器均會重新獲取用戶當前的登錄狀態(tài),并將用戶當前的登錄狀態(tài)通過好友所在的通訊服務器轉(zhuǎn)發(fā)至自身好友列表中的在線好友,使所述在線好友的客戶端及時更新自身好友列表中所述用戶的登錄狀態(tài)。同樣,當好友的登錄狀態(tài)發(fā)生改變時,好友所在的即時通訊服務器也會通過用戶所在的即時通訊服務器重新將好友的當前登錄狀態(tài)轉(zhuǎn)發(fā)至所述用戶的客戶端,使所述用戶的客戶端及時更新自身好友列表中有關(guān)所述好友的登錄狀態(tài)。
需要說明的是,本實施例中的步驟S201~步驟S202以及步驟S204由于與圖1所示實施例中的步驟S101~步驟S103完全相同,因此,在此不再贅述。
因此,可以看出,本實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的方法同樣無需在用戶所在的即時通訊服務器的內(nèi)存中實時維護好友的登錄狀態(tài)即可使用戶在登錄時及時獲取并顯示好友的登錄狀態(tài),大大減少了內(nèi)存的占用量,并且無需頻繁的更新即時通訊服務器的內(nèi)存,減輕了整個即時通訊系統(tǒng)的運行壓力;此外,相對于上一實施例,本實施例還能夠在用戶的登錄狀態(tài)發(fā)生改變時,及時更新用戶在其在線好友的好友列表中的登錄狀態(tài)。
圖3是本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)的示意性框圖,該系統(tǒng)位于用戶所在的即時通訊服務器中。為了便于說明,僅僅示出了與本實施例相關(guān)的部分。
參見圖3所示,本實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng),包括:
好友列表獲取單元1,用于當用戶登錄所述即時通訊工具的客戶端時,根據(jù)用戶的登錄賬號將用戶的好友列表返回至所述用戶的客戶端進行顯示,所述好友列表中好友的登錄狀態(tài)均顯示為默認狀態(tài);
好友登錄狀態(tài)獲取單元2,用于根據(jù)所述好友列表查詢好友所在的即時通訊服務器,并通過所述好友所在的即時通訊服務器獲取所述好友當前的登錄狀態(tài);
好友登錄狀態(tài)更新單元3,用于將所述好友當前的登錄狀態(tài)返回至所述用戶的客戶端,使所述用戶的客戶端根據(jù)所述好友當前的登錄狀態(tài)更新所述好友列表中顯示的好友的登錄狀態(tài)。
可選的,參見圖4所示,所述好友登錄狀態(tài)獲取單元2包括:
好友服務器查詢單元21,用于根據(jù)所述好友列表查詢所述好友所在的即時通訊服務器;
第一登錄狀態(tài)獲取單元22,用于若所述好友與所述用戶分別位于不同的即時通訊服務器,則將用戶的上線通知信息發(fā)送至所述好友所在的即時通訊服務器,并接收所述好友所在即時通訊服務器根據(jù)所述用戶的上線通知信息返回的應答信息,所述應答信息包括所述用戶好友當前的登錄狀態(tài);或者,
第二登錄狀態(tài)獲取單元23,用于若所述用戶好友與所述用戶位于同一即時通訊服務器,則直接在所述用戶所在的即時通訊服務器的數(shù)據(jù)庫中查找所述好友當前的登錄狀態(tài)。
可選的,所述登錄狀態(tài)包括在線狀態(tài)和登錄資源狀態(tài),其中:所述在線狀態(tài)包括在線、離線、忙碌、離開以及自定義狀態(tài);所述登錄資源狀態(tài)包括未知、手機、電腦、智能電視以及網(wǎng)頁web;所述默認狀態(tài)中的在線狀態(tài)為離線,登錄資源狀態(tài)為未知。
可選的,參見圖5所示,在另一實施例中,所述的在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)還包括:
用戶上線通知單元4,用于通過所述好友所在的即時通訊服務器根據(jù)所述好友當前的登錄狀態(tài)向在線好友的客戶端發(fā)送用戶的上線通知信息,使所述在線好友的客戶端根據(jù)所述上線通知信息更新所述用戶的登錄狀態(tài)。
可選的,所述的在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)還包括:
用戶登錄狀態(tài)更新單元5,用于當用戶的登錄狀態(tài)發(fā)生改變時,所述重新獲取用戶當前的登錄狀態(tài),并將用戶當前的登錄狀態(tài)通過所述好友所在的即時通訊服務器發(fā)送至在線好友的客戶端,使所述在線好友的客戶端根據(jù)所述用戶當前的登錄狀態(tài)更新自身好友列表中所述用戶的登錄狀態(tài)。
需要說明的是,本發(fā)明實施例提供的上述系統(tǒng)中各個模塊,由于與本發(fā)明方法實施例基于同一構(gòu)思,其帶來的技術(shù)效果與本發(fā)明方法實施例相同,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
因此,可以看出,本發(fā)明實施例提供的一種在即時通訊工具中顯示好友登錄狀態(tài)的系統(tǒng)同樣無需在用戶所在的即時通訊服務器的內(nèi)存中實時維護好友的登錄狀態(tài)即可使用戶在登錄時及時獲取并顯示好友的登錄狀態(tài),大大減少了內(nèi)存的占用量,并且無需頻繁的更新即時通訊服務器的內(nèi)存,減輕了整個即時通訊系統(tǒng)的運行壓力。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。