tft每日頭條

 > 生活

 > qq在線狀态怎麼查好友的

qq在線狀态怎麼查好友的

生活 更新时间:2025-02-25 22:28:54

qq在線狀态怎麼查好友的(QQ好友在線離線怎麼測試)1

即時通訊是目前internet上最為流行的通訊方式,各種各樣的即時通訊軟件也層出不窮,那麼今天主要針對QQ好友在線狀态/QQ群友在線狀态功能出發,一起思考其中的實現原理以及我們如何去測試此功能?

當大家在使用QQ的時候,是否和我一樣有如下疑問:

在好友列表中為什麼可以實時的看到qq好友的在線、離線等狀态?

在QQ群的群友列表中能看到當前群友的在線、離線等狀态,是如何實現的?

作為測試工程師究竟該如何去測試裡面用到的技術?

我帶着這些問題,去搜集了一些資料進行了解、學習和總結後,現分享給大家。

關于QQ好友在線/離線狀态我所理解的流程是:

當用戶A登錄成功時,服務器要把用戶A的在線狀态(online)寫到緩存(高可用的緩存集群裡);userid-A—》login—》server—》set status in cache(userid:online)

當用戶A下線(登出)時,服務器要找到用戶A的緩存将在線狀态(online)變成離線狀态(offline);userid-A—》loginout—》server—》update status in cache(userid-A:offline)

其他所有用戶的狀态都會存儲在緩存中,所以當用戶A登錄時,從數據庫中查出用戶A的好友,再從緩存中查出這些好友所對應的在線狀态,從而用戶A可以看出哪些好友在線哪些好友離線;

userid-A—》my friends status—》get friends userids in DB —》get userids status in cache(userid1:online,userid2:offline,userid3:offline,userid4:online……)

針對上面的流程主要考慮的測試點如下:

無緩存情況下,用戶A登錄時,寫入緩存正常(緩存大家應該都了解過,比如memcache、redis等如何查看緩存?不會的同學可以咨詢也可自己查下相關資料)

當用戶退出登錄時,緩存中對應的value被置為offline;

緩存存的有效期校驗;

用戶A的好友用戶B下線/上線時,狀态是否顯示正确;

用戶A的多個好友中有在線有離線的,當用戶A查看好友狀态時,狀态顯示是否正确;

當redis連接異常或超時時,應該如何處理;

等等...大家可以想想需要測試的功能點,要了解開發實現的過程,盡可能的去覆蓋測試點。

寫到這裡,其實其中還有一個重要的點:比如用戶A的好友用戶B在線,突然,用戶B離線了,那麼用戶A能否立即看到好友由在線變成離線呢?這也是我們測試人員需要考慮的功能點!到底是不是實時的我也不能确定,如果有人知道的話可以分享下。如果對實時性要求較高,可以采用推送的方式同步,如果實時性要求不太高的話,可以采用輪詢拉取的方式進行同步。

再普及下輪詢拉取方式和推送方式,如下:

什麼是輪詢拉取方式

舉例說明:用戶userid-A要看到好友的在線狀态的話,比如就要每分鐘輪詢向服務器拉取全部好友的在線狀态。缺點就是:有一分鐘的延遲,同時當好友的狀态期間沒有變化時也請求服務器拉取産生大量的無效請求暫用服務器的資源。這種方式可能大家在工作中也經常用到,不斷的輪詢獲取服務器的信息。

什麼是推送的方式

繼續舉例說明:還是用戶userid-A要看到好友用戶userid-B在線狀态的話,當用戶userid-B下線時,由在線變成離線(更新緩存為offline),同時要将這個狀态改變的通知推送給用戶userid-B的在線反向好友。這樣就變成實時了,但是缺點就是:在線好友量大的話,任何一個用戶狀态的改變會擴散很多實時通知,需要考慮承載能力。

大家可以思考下,QQ群友的在線同步應該是怎樣的流程呢?到底是使用輪詢的方式還是推送的方式呢?後續如果有時間的話可以繼續讨論。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved