本申請(qǐng)涉及通信領(lǐng)域,尤其涉及一種用戶(hù)信息流的請(qǐng)求方法及裝置。
背景技術(shù):
在社交應(yīng)用中,用戶(hù)通過(guò)查看社交應(yīng)用中顯示的信息流(feeds信息流),可以幫助用戶(hù)實(shí)時(shí)的了解到所關(guān)注好友的最近動(dòng)向。其中,feeds信息流,通常包括用戶(hù)所關(guān)注好友發(fā)送的文字、圖片以及視頻等社交信息流;例如,在微博等社交平臺(tái)中,feeds信息流通常包括用戶(hù)關(guān)注的其他用戶(hù)所發(fā)送的文字、圖片以及視頻等社交信息。然而,隨著用戶(hù)所關(guān)注的好友數(shù)量的增多,用戶(hù)在訪問(wèn)feeds信息流時(shí),由于數(shù)據(jù)更新量大,可能需要服務(wù)端耗費(fèi)大量時(shí)間在多路數(shù)據(jù)查詢(xún)和合并上,從而造成用戶(hù)在請(qǐng)求feeds信息流時(shí),無(wú)法得到及時(shí)響應(yīng)的,從而影響用戶(hù)體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)岢鲆环N用戶(hù)信息流的請(qǐng)求方法,該方法包括:
接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;
當(dāng)接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;
當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端。
可選的,所述方法還包括:
當(dāng)所述用戶(hù)的信息流更新完成后,結(jié)束所述信息流更新進(jìn)程。
可選的,所述信息流訪問(wèn)請(qǐng)求用于觸發(fā)啟動(dòng)所述信息流更新進(jìn)程;
所述當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端包括:
當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求時(shí),判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新,并將已更新完成的信息流推送至所述客戶(hù)端。
可選的,所述方法還包括:
當(dāng)啟動(dòng)所述信息流更新進(jìn)程后,判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,將本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù)發(fā)送至所述客戶(hù)端。
可選的,所述如果所述用戶(hù)的信息流已更新完成,將本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù)推送至所述客戶(hù)端包括:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,向所述客戶(hù)端發(fā)送所述用戶(hù)的信息流發(fā)生更新的通知消息;
當(dāng)接收到所述客戶(hù)端發(fā)送的針對(duì)所述通知消息的信息流獲取請(qǐng)求時(shí),計(jì)算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì)算出的所述差值數(shù)據(jù)返回至所述客戶(hù)端。
可選的,所述如果所述用戶(hù)的信息流已更新完成,將本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù)推送至所述客戶(hù)端包括:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,計(jì)算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì) 算出的所述差值數(shù)據(jù)推送至所述客戶(hù)端。
本申請(qǐng)還提出一種用戶(hù)信息流的請(qǐng)求裝置,該裝置包括:
接收模塊,用于接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;
啟動(dòng)模塊,用于在接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;
推送模塊,用于在接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端。
可選的,所述裝置還包括:
結(jié)束模塊,用于在所述用戶(hù)的信息流更新完成后,結(jié)束所述信息流更新進(jìn)程。
可選的,所述信息流訪問(wèn)請(qǐng)求用于觸發(fā)啟動(dòng)所述信息流更新進(jìn)程;
所述推送模塊具體用于:
當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求時(shí),判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新,并將已更新完成的信息流推送至所述客戶(hù)端。
可選的,所述推送模塊進(jìn)一步用于:
當(dāng)啟動(dòng)所述信息流更新進(jìn)程后,判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,將本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù)發(fā)送至所述客戶(hù)端。
可選的,所述推送模塊進(jìn)一步用于:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,向所述客戶(hù)端發(fā)送所述用戶(hù)的信息流發(fā)生更新的通知消息;
當(dāng)接收到所述客戶(hù)端發(fā)送的針對(duì)所述通知消息的信息流獲取請(qǐng)求時(shí),計(jì) 算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì)算出的所述差值數(shù)據(jù)返回至所述客戶(hù)端。
可選的,所述推送模塊進(jìn)一步用于:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,
計(jì)算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì)算出的所述差值數(shù)據(jù)推送至所述客戶(hù)端。
本申請(qǐng)中,通過(guò)接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;當(dāng)接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端;可以實(shí)現(xiàn)在用戶(hù)成功登陸后,立即針對(duì)該用戶(hù)的信息流進(jìn)行更新,當(dāng)用戶(hù)主動(dòng)訪問(wèn)信息流時(shí),可以將已更新完成的該用戶(hù)的信息流推送給該用戶(hù),從而使得用戶(hù)在主動(dòng)訪問(wèn)信息流時(shí),能夠得到迅速的響應(yīng),不會(huì)由于數(shù)據(jù)更新量過(guò)大而造成數(shù)據(jù)更新不及時(shí),用戶(hù)等待時(shí)間較長(zhǎng)的問(wèn)題。
附圖說(shuō)明
圖1是本申請(qǐng)一實(shí)施例提供的一種用戶(hù)信息流的請(qǐng)求方法的流程圖;
圖2是本申請(qǐng)一實(shí)施例提供的一種用戶(hù)信息流的請(qǐng)求裝置的邏輯框圖;
圖3是本申請(qǐng)一實(shí)施例提供的承載所述一種用戶(hù)信息流的請(qǐng)求裝置的服務(wù)端的硬件結(jié)構(gòu)圖。
具體實(shí)施方式
在相關(guān)技術(shù)中,用戶(hù)在訪問(wèn)feeds信息流時(shí),通常存在拉取模式、推送模式以及拉取模式和推送模式相結(jié)合三種不同的feeds信息流訪問(wèn)模式。在這三種模式下下,響應(yīng)用戶(hù)的訪問(wèn)請(qǐng)求的處理方式也各不相同。
在拉取模式下,用戶(hù)關(guān)注的人員的feeds信息流,都是在用戶(hù)主動(dòng)訪問(wèn)時(shí)才進(jìn)行更新。當(dāng)用戶(hù)關(guān)注的人員產(chǎn)生新的feeds信息時(shí),服務(wù)端并不立即主動(dòng)更新該用戶(hù)的feeds信息流,該用戶(hù)在未主動(dòng)訪問(wèn)關(guān)注的人員的feeds信息流時(shí),該用戶(hù)對(duì)于所關(guān)注的人員的feeds信息的變化是毫不知情的,當(dāng)用戶(hù)在主動(dòng)訪問(wèn)關(guān)注的人員的feeds信息流時(shí),服務(wù)端對(duì)該用戶(hù)關(guān)注的所有人員當(dāng)前的feeds信息進(jìn)行更新,然后對(duì)更新的數(shù)據(jù)進(jìn)行合并存儲(chǔ)后,返回給該用戶(hù)的客戶(hù)端。
然而,對(duì)于拉取模式,由于用戶(hù)關(guān)注的人員的feeds信息只有在該用戶(hù)主動(dòng)訪問(wèn)的時(shí)候才會(huì)實(shí)時(shí)的進(jìn)行更新,因此當(dāng)該用戶(hù)關(guān)注的人員數(shù)據(jù)較大時(shí),大量的數(shù)據(jù)查詢(xún)合并需要很長(zhǎng)的時(shí)間,用戶(hù)需要等待服務(wù)端整個(gè)數(shù)據(jù)更新過(guò)程處理完之后,才會(huì)得到服務(wù)端返回的feeds信息??梢?jiàn),在這種情況下,用戶(hù)在主動(dòng)訪問(wèn)關(guān)注的人員的feeds信息時(shí),不能得到及時(shí)的響應(yīng),需要等待一個(gè)較長(zhǎng)的事件,尤其在弱網(wǎng)的情況下更為明顯。
在推送模式下,數(shù)據(jù)更新方式與拉取模式相反,當(dāng)用戶(hù)關(guān)注的人員產(chǎn)生新的feeds信息時(shí),服務(wù)端會(huì)立刻通知該用戶(hù),從而可以保證客戶(hù)端本地保存的用戶(hù)的feeds信息流均為最新的數(shù)據(jù)。當(dāng)用戶(hù)從客戶(hù)端發(fā)起feeds信息流訪問(wèn)請(qǐng)求時(shí),客戶(hù)端不需要做任何的計(jì)算邏輯,直接查詢(xún)本地保存的feeds信息流向用戶(hù)顯示即可。
然而,對(duì)于推送模式,當(dāng)用戶(hù)關(guān)注的人數(shù)達(dá)到一定的數(shù)量時(shí),比如數(shù)十萬(wàn)計(jì),此時(shí)服務(wù)端一次feeds信息流的推送,需要將更新后的feeds信息流拷貝成數(shù)十萬(wàn)份進(jìn)行推送??梢?jiàn),通過(guò)這種方式,會(huì)大大增加服務(wù)端的計(jì)算壓力。
在拉取模式和推送模式相結(jié)合的模式下,對(duì)于“粉絲”數(shù)量小于閾值的用戶(hù)采用推送模式,而對(duì)于“粉絲”數(shù)量大于閾值的用戶(hù),采用拉取模式,即該用戶(hù)在產(chǎn)生新的feeds信息時(shí),并不向其“粉絲”推送數(shù)據(jù)更新,而是在其粉絲產(chǎn)生訪問(wèn)請(qǐng)求時(shí),再把該用戶(hù)更新的數(shù)據(jù)合并到該粉絲的feeds信息流中,此時(shí)和拉取模式一樣,服務(wù)端仍然會(huì)有更新以及合并存儲(chǔ)的過(guò)程, 處理完成之后,再將更新后的數(shù)據(jù)返回給發(fā)起請(qǐng)求的客戶(hù)端??梢?jiàn),通過(guò)這種方式,仍然會(huì)存在拉取模式下,用戶(hù)在訪問(wèn)feeds信息流時(shí),不能得到及時(shí)的響應(yīng)的問(wèn)題。
有鑒于此,本申請(qǐng)?zhí)岢鲆环N用戶(hù)信息流的請(qǐng)求方法,通過(guò)接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;當(dāng)接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端,可以實(shí)現(xiàn)在用戶(hù)成功登陸后,立即針對(duì)該用戶(hù)的信息流進(jìn)行更新,當(dāng)用戶(hù)主動(dòng)訪問(wèn)信息流時(shí),可以將已更新完成的該用戶(hù)的信息流推送給該用戶(hù),從而使得用戶(hù)在主動(dòng)訪問(wèn)信息流時(shí),能夠得到迅速的響應(yīng),不會(huì)由于數(shù)據(jù)更新量過(guò)大而造成數(shù)據(jù)更新不及時(shí),用戶(hù)等待時(shí)間較長(zhǎng)的問(wèn)題。
下面通過(guò)具體實(shí)施例并結(jié)合具體的應(yīng)用場(chǎng)景對(duì)本申請(qǐng)進(jìn)行描述。
請(qǐng)參考圖1,圖1是本申請(qǐng)一實(shí)施例提供的一種用戶(hù)信息流的請(qǐng)求方法,應(yīng)用于服務(wù)端,所述方法執(zhí)行以下步驟:
步驟101,接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;
步驟102,當(dāng)接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;
步驟103,當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端。
上述客戶(hù)端可以包括具有社交功能的客戶(hù)端軟件;例如,上述客戶(hù)端可以包括社交類(lèi)app;比如微博、微信等;上述客戶(hù)端也可以包括具有社交功能的非社交類(lèi)app;比如,該客戶(hù)端可以是具有“好友圈”功能的理財(cái)app。
上述服務(wù)端可以包括面向上述客戶(hù)端提供服務(wù),向?yàn)槭褂蒙鲜隹蛻?hù)端的用戶(hù)更新feeds信息流,以及向上述客戶(hù)端推送更新后的feeds信息流的服務(wù)器、服務(wù)器集群或者基于服務(wù)器集群構(gòu)建的云平臺(tái)。
其中,承載上述客戶(hù)端的硬件環(huán)境,在本申請(qǐng)中不進(jìn)行特別限定;例如,可以是用戶(hù)的移動(dòng)智能終端或者pc終端。即在本申請(qǐng)中,上述客戶(hù)端可以承載在用戶(hù)的觸屏智能終端上的app應(yīng)用,也可以是承載在pc終端的web應(yīng)用。
在本例中,服務(wù)端可以通過(guò)在后臺(tái)啟動(dòng)預(yù)設(shè)的信息流更新進(jìn)程,針對(duì)使用上述客戶(hù)端的用戶(hù)的feeds信息流進(jìn)行更新。
其中,該信息流更新進(jìn)程為后臺(tái)進(jìn)程,服務(wù)端可以對(duì)預(yù)先對(duì)該更新進(jìn)程進(jìn)行加鎖處理,以保證在對(duì)用戶(hù)的feeds信息流進(jìn)行更新時(shí),服務(wù)端只通過(guò)該唯一的信息流更新進(jìn)程對(duì)該用戶(hù)的feeds信息流進(jìn)行更新。
例如,當(dāng)上述服務(wù)端為分布式的服務(wù)器集群時(shí),服務(wù)端可以對(duì)上述信息流更新進(jìn)程添加分布式鎖,以確保在對(duì)用戶(hù)的feeds信息流進(jìn)行更新時(shí),服務(wù)器集群中所有的物理服務(wù)器上,只能通過(guò)唯一的信息流更新進(jìn)程對(duì)該用戶(hù)的feeds信息流進(jìn)行更新,即當(dāng)服務(wù)器集群中任一物理服務(wù)器通過(guò)啟動(dòng)上述信息流更新進(jìn)程對(duì)該用戶(hù)的feeds信息流進(jìn)行更新時(shí),在該物理服務(wù)器更新完成結(jié)束該信息流更新進(jìn)程以前,該服務(wù)器集群中的其它物理服務(wù)器將無(wú)法重復(fù)啟動(dòng)上述信息流更新進(jìn)程對(duì)該用戶(hù)的feeds信息流進(jìn)行更新。通過(guò)這種方式,可以避免服務(wù)器集群并發(fā)的針對(duì)該用戶(hù)的feeds信息流進(jìn)行更新,從而造成用戶(hù)的feeds信息流的重復(fù)更新
在本例中,上述信息流更新進(jìn)程,可以由用戶(hù)成功登陸上述客戶(hù)端的事件觸發(fā)啟動(dòng),也可以由用戶(hù)針對(duì)feeds信息流的訪問(wèn)事件觸發(fā)啟動(dòng)。
例如,在一種情況下,當(dāng)用戶(hù)成功登陸客戶(hù)端,服務(wù)端在接收到該用戶(hù)成功登陸的通知消息后,可以啟動(dòng)該信息流更新進(jìn)程對(duì)該用戶(hù)的feeds信息流進(jìn)行更新;在另一種情況下,當(dāng)用戶(hù)成功登陸客戶(hù)端后,服務(wù)端接收到用戶(hù)通過(guò)客戶(hù)端發(fā)起的針對(duì)feeds信息流的訪問(wèn)請(qǐng)求時(shí),也可以啟動(dòng)該信息流更新進(jìn)程對(duì)用戶(hù)的feeds信息流進(jìn)行更新。
以下結(jié)合以上兩種情況對(duì)服務(wù)端啟動(dòng)上述信息流更新進(jìn)程對(duì)用戶(hù)的feeds信息流進(jìn)行更新的過(guò)程進(jìn)行詳細(xì)描述。
在本例中,用戶(hù)在登錄上述客戶(hù)端時(shí),仍然可以通過(guò)在客戶(hù)端提供的登錄界面中輸入用戶(hù)名和密碼來(lái)實(shí)現(xiàn)。當(dāng)用戶(hù)在上述客戶(hù)端中輸入了用戶(hù)名和密碼后,客戶(hù)端可以將用戶(hù)輸入的用戶(hù)名和密碼提交至對(duì)應(yīng)的登錄服務(wù)器進(jìn)行登錄驗(yàn)證,當(dāng)驗(yàn)證通過(guò)后,完成正常的登錄過(guò)程。
當(dāng)用戶(hù)登錄成功后,客戶(hù)端或者上述登錄服務(wù)器可以將該用戶(hù)成功登錄的事件通過(guò)通知消息發(fā)送給上述服務(wù)端。上述服務(wù)端在接收到該用戶(hù)成功登陸的通知消息后,可以立即啟動(dòng)上述信息流更新進(jìn)程,針對(duì)該用戶(hù)的信息流進(jìn)行更新。當(dāng)更新完成后,服務(wù)端可以結(jié)束該信息流更新進(jìn)程。
在本例中,用戶(hù)成功登陸后,在執(zhí)行正常的操作主動(dòng)向服務(wù)端請(qǐng)求訪問(wèn)最新的feeds信息流之前,上述服務(wù)端可以默認(rèn)不向上述客戶(hù)端發(fā)送數(shù)據(jù)更新通知。在這種情況下,用戶(hù)成功登陸后,在執(zhí)行正常的操作主動(dòng)向服務(wù)端請(qǐng)求訪問(wèn)最新的feeds信息流之前,即使該用戶(hù)的feeds信息流發(fā)生更新(即該用戶(hù)關(guān)注的人員發(fā)送了新的feeds信息),此時(shí)上述服務(wù)端也可以不向客戶(hù)端發(fā)送數(shù)據(jù)更新通知,來(lái)通知用戶(hù)當(dāng)前的feeds信息流已發(fā)生更新。
當(dāng)用戶(hù)在進(jìn)行正常的操作后,此時(shí)用戶(hù)可以通過(guò)針對(duì)客戶(hù)端提供的feeds信息顯示界面執(zhí)行特定的操作,觸發(fā)客戶(hù)端向上述服務(wù)端發(fā)送feeds信息流的訪問(wèn)請(qǐng)求,來(lái)對(duì)當(dāng)前的feeds信息流進(jìn)行刷新,以訪問(wèn)最新的feeds信息流。
其中,上述特定的操作在本實(shí)施例中不進(jìn)行特別限定;例如,在實(shí)現(xiàn)時(shí),上述特定的操作可以包括針對(duì)feeds信息顯示界面的點(diǎn)擊操作、向下拖動(dòng)操作等,當(dāng)用戶(hù)針對(duì)feeds信息顯示界面上的預(yù)設(shè)位置執(zhí)行點(diǎn)擊操作,或者用戶(hù)針對(duì)feeds信息顯示界面執(zhí)行向下拖動(dòng)操作時(shí),可以觸發(fā)客戶(hù)端向上述服務(wù)端發(fā)送feeds信息流的訪問(wèn)請(qǐng)求。
當(dāng)服務(wù)端接收到上述客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求時(shí),由于feeds信息流的訪問(wèn)請(qǐng)求也可以觸發(fā)服務(wù)端啟動(dòng)上述信息流更新進(jìn)程,因此在這種情況下,服務(wù)端可以判斷該用戶(hù)的信息流是否已經(jīng)更新完成,來(lái)確定是否再次啟動(dòng)上述信息流更新進(jìn)程。
一方面,如果該用戶(hù)的信息流已經(jīng)更新完成,此時(shí)由上述用戶(hù)成功登陸的通知消息觸發(fā)啟動(dòng)的上述信息流更新進(jìn)程已經(jīng)運(yùn)行結(jié)束,服務(wù)端則可以再次啟動(dòng)該信息流更新進(jìn)程,對(duì)該用戶(hù)的feeds信息流進(jìn)行更新。與此同時(shí),服務(wù)端可以查詢(xún)已經(jīng)更新完成的該用戶(hù)的feeds信息流,然后將已經(jīng)更新完成的該用戶(hù)的feeds信息流主動(dòng)推送至客戶(hù)端。當(dāng)客戶(hù)端接收到服務(wù)端推送的已經(jīng)更新完成的該用戶(hù)的feeds信息流后,可以立即在feeds信息顯示界面中加載接收到的feeds信息流,向用戶(hù)進(jìn)行顯示。
在這種情況下,由于用戶(hù)在主動(dòng)向服務(wù)端請(qǐng)求訪問(wèn)最新的feeds信息流時(shí),feeds信息流已經(jīng)更新完成,用戶(hù)不需要等待服務(wù)端對(duì)feeds信息流進(jìn)行更新完成,因此用戶(hù)可以得到迅速的響應(yīng)。
另一方面,如果該用戶(hù)的信息流未更新完成,此時(shí)由上述用戶(hù)成功登陸的通知消息觸發(fā)啟動(dòng)的上述信息流更新進(jìn)程尚未運(yùn)行結(jié)束,由于服務(wù)端預(yù)先為該信息流更新進(jìn)程進(jìn)行了加鎖處理,因此在這種情況下,當(dāng)服務(wù)端接收到客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求時(shí),可以不針對(duì)該訪問(wèn)請(qǐng)求進(jìn)行響應(yīng),以避免服務(wù)端并發(fā)啟動(dòng)多個(gè)信息流更新進(jìn)程,對(duì)該用戶(hù)的feeds信息流進(jìn)行重復(fù)更新。
在本例中,當(dāng)服務(wù)端接收到上述客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求,再次啟動(dòng)上述信息流更新進(jìn)程后,服務(wù)端可以通過(guò)修改配置參數(shù),開(kāi)始向客戶(hù)端發(fā)送數(shù)據(jù)更新通知。
在這種情況下,當(dāng)用戶(hù)的feeds信息流更新完成,此時(shí)由上述用戶(hù)訪問(wèn)請(qǐng)求觸發(fā)啟動(dòng)的上述信息流更新進(jìn)程運(yùn)行結(jié)束,服務(wù)端可以判斷本次更新完成的feeds信息流與上一次更新完成的feeds信息流相比是否發(fā)生更新,來(lái)確定是否需要向客戶(hù)端發(fā)送數(shù)據(jù)更新通知。
在本例中,如果本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生了更新,此時(shí)服務(wù)端可以向客戶(hù)端發(fā)送該用戶(hù)的feeds信息流已發(fā)生更新的通知消息。
在實(shí)現(xiàn)時(shí),該通知消息可以是服務(wù)端基于sync技術(shù)向客戶(hù)端發(fā)送一條 sync通知消息,在該sync通知消息中可以攜帶本次feeds信息更新的時(shí)間,以及發(fā)生更新的feeds信息的條數(shù),當(dāng)客戶(hù)端收到該sync通知消息后,可以處理該sync通知消息,可以將該sync通知消息中攜帶的feeds信息更新的時(shí)間與本地已經(jīng)加載的feeds信息流的更新時(shí)間進(jìn)行比較,如果該sync通知消息中攜帶的feeds信息更新的時(shí)間比本地已經(jīng)加載的feeds信息流的更新時(shí)間更新,表明該用戶(hù)的feeds信息流已經(jīng)發(fā)生更新,客戶(hù)端可以從該sync通知消息中讀取發(fā)生更新的feeds信息的條數(shù),然后生成一條對(duì)應(yīng)的提示消息,在feeds信息顯示界面的預(yù)設(shè)位置(比如界面的最上方)進(jìn)行顯示。例如,該提示消息可以是一條“您有xx條消息未查看”的提示消息。
當(dāng)客戶(hù)端在feeds信息顯示界面的預(yù)設(shè)位置顯示上述提示消息后,此時(shí)用戶(hù)可以針對(duì)該提示消息執(zhí)行特定的操作,來(lái)觸發(fā)客戶(hù)端向服務(wù)端發(fā)送對(duì)應(yīng)的信息流獲取請(qǐng)求,來(lái)獲取已經(jīng)發(fā)生更新的feeds信息流,將已經(jīng)發(fā)生更新的feeds信息流從服務(wù)端“拉取”至本地。
例如,該特定的操作可以是觸摸操作或者點(diǎn)擊操作,當(dāng)用戶(hù)觸摸或者點(diǎn)擊客戶(hù)端的feeds信息顯示界面中顯示的上述通知消息后,可以觸發(fā)客戶(hù)端向服務(wù)端發(fā)送對(duì)應(yīng)的信息流獲取請(qǐng)求。
當(dāng)服務(wù)端接收到客戶(hù)端發(fā)送的上述信息流獲取請(qǐng)求后,可以計(jì)算本次更新完成的feeds信息流與上一次更新完成的feeds信息流的差值數(shù)據(jù)(即本次更新完成的feeds信息流中新增的feeds信息),并將計(jì)算出的上述差值數(shù)據(jù)返回至所述客戶(hù)端。當(dāng)客戶(hù)端在收到服務(wù)端返回的上述差值數(shù)據(jù)后,可以在feeds信息顯示界面中加載接收到的上述差值數(shù)據(jù),以向用戶(hù)進(jìn)行顯示。
當(dāng)然,如果本次更新完成的信息流與上一次更新完成的信息流相比未發(fā)生更新,此時(shí)服務(wù)端可以不做處理,當(dāng)再次接收到客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求,再次觸發(fā)啟動(dòng)上述信息流更新進(jìn)程后,再重新進(jìn)行判斷是否向客戶(hù)端發(fā)送數(shù)據(jù)更新通知。
可見(jiàn),通過(guò)這種方式,一方面,當(dāng)由客戶(hù)端發(fā)送的用戶(hù)成功登陸的通知消息觸發(fā)服務(wù)端啟動(dòng)上述信息流更新進(jìn)程時(shí),服務(wù)端可以默認(rèn)不向客戶(hù)端發(fā) 送數(shù)據(jù)更新通知,當(dāng)接收到客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求,可以將已更新完成的feeds信息流推送至客戶(hù)端,從而用戶(hù)可以得到快速的響應(yīng)。
另一方面,當(dāng)由客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求觸發(fā)服務(wù)端啟動(dòng)上述信息流更新進(jìn)程時(shí),服務(wù)端可以開(kāi)啟向客戶(hù)端發(fā)送數(shù)據(jù)更新通知,當(dāng)用戶(hù)的feeds信息流更新完成后,服務(wù)端可以向客戶(hù)端發(fā)送feeds信息流已經(jīng)發(fā)生更新的通知消息,以通知客戶(hù)端將本次更新完成的feeds信息流與上一次更新完成的feeds信息流的差值數(shù)據(jù)“拉取”至客戶(hù)端,從而可以保證客戶(hù)端不會(huì)請(qǐng)求到重復(fù)的feeds信息流。
另外,需要說(shuō)明的是,當(dāng)由客戶(hù)端發(fā)送的feeds信息流的訪問(wèn)請(qǐng)求觸發(fā)啟動(dòng)的上述信息流更新進(jìn)程結(jié)束后,服務(wù)端也可以不向客戶(hù)端發(fā)送數(shù)據(jù)更新通知,而是采用靜默推送技術(shù),將本次更新完成的feeds信息流與上一次更新完成的feeds信息流的差值數(shù)據(jù)直接靜默推送至客戶(hù)端,即當(dāng)本次更新完成的feeds信息流與上一次更新完成的feeds信息流相比發(fā)生更新后,客戶(hù)端可以不再?gòu)姆?wù)端上將差值數(shù)據(jù)主動(dòng)“拉取”至本地,而是由服務(wù)端在后臺(tái)將上述差值數(shù)據(jù)靜默推送至本地,從而當(dāng)用戶(hù)通過(guò)客戶(hù)端再次請(qǐng)求訪問(wèn)最新的feeds信息流時(shí),客戶(hù)端可以直接在feeds信息流的顯示界面中加載本地存儲(chǔ)的上述差值數(shù)據(jù)向用戶(hù)進(jìn)行顯示。
在以上實(shí)施例中,通過(guò)接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;當(dāng)接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端;可以實(shí)現(xiàn)在用戶(hù)成功登陸后,立即針對(duì)該用戶(hù)的信息流進(jìn)行更新,當(dāng)用戶(hù)主動(dòng)訪問(wèn)信息流時(shí),可以將已更新完成的該用戶(hù)的信息流推送給該用戶(hù),從而使得用戶(hù)在主動(dòng)訪問(wèn)信息流時(shí),能夠得到迅速的響應(yīng),不會(huì)由于數(shù)據(jù)更新量過(guò)大而造成數(shù)據(jù)更新不及時(shí),用戶(hù)等待時(shí)間較長(zhǎng)的問(wèn)題。
與上述方法實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了裝置的實(shí)施例。
請(qǐng)參見(jiàn)圖2,本申請(qǐng)?zhí)岢鲆环N用戶(hù)信息流的請(qǐng)求裝置20,應(yīng)用于服務(wù)端 端;其中,請(qǐng)參見(jiàn)圖3,作為承載所述用戶(hù)信息流的請(qǐng)求裝置20的服務(wù)端所涉及的硬件架構(gòu)中,通常包括cpu、內(nèi)存、非易失性存儲(chǔ)器、網(wǎng)絡(luò)接口以及內(nèi)部總線(xiàn)等;以軟件實(shí)現(xiàn)為例,所述用戶(hù)信息流的請(qǐng)求裝置20通常可以理解為加載在內(nèi)存中的計(jì)算機(jī)程序,通過(guò)cpu運(yùn)行之后形成的軟硬件相結(jié)合的邏輯裝置,所述裝置20包括:
接收模塊201,用于接收客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息;所述通知消息用于觸發(fā)啟動(dòng)信息流更新進(jìn)程;
啟動(dòng)模塊202,用于在接收到客戶(hù)端發(fā)送的用戶(hù)成功登錄的通知消息后,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新;
推送模塊203,用于在接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求后,將更新完成的信息流推送至所述客戶(hù)端。
在本例中,所述裝置20還包括:
結(jié)束模塊204,用于在所述用戶(hù)的信息流更新完成后,結(jié)束所述信息流更新進(jìn)程。
在本例中,所述信息流訪問(wèn)請(qǐng)求用于觸發(fā)啟動(dòng)所述信息流更新進(jìn)程;
所述推送模塊203具體用于:
當(dāng)接收到所述客戶(hù)端發(fā)送的信息流訪問(wèn)請(qǐng)求時(shí),判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,啟動(dòng)所述信息流更新進(jìn)程針對(duì)所述用戶(hù)的信息流進(jìn)行更新,并將已更新完成的信息流推送至所述客戶(hù)端。
在本例中,所述推送模塊203進(jìn)一步用于:
當(dāng)啟動(dòng)所述信息流更新進(jìn)程后,判斷所述用戶(hù)的信息流是否更新完成;
如果所述用戶(hù)的信息流已更新完成,將本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù)發(fā)送至所述客戶(hù)端。
在本例中,所述推送模塊203進(jìn)一步用于:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,向所述客戶(hù)端發(fā)送所述用戶(hù)的信息流發(fā)生更新的通知消息;
當(dāng)接收到所述客戶(hù)端發(fā)送的針對(duì)所述通知消息的信息流獲取請(qǐng)求時(shí),計(jì)算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì)算出的所述差值數(shù)據(jù)返回至所述客戶(hù)端。
在本例中,所述推送模塊203進(jìn)一步用于:
如果所述用戶(hù)的信息流已更新完成,判斷本次更新完成的信息流與上一次更新完成的信息流相比是否發(fā)生更新;
如果本次更新完成的信息流與上一次更新完成的信息流相比發(fā)生了更新,
計(jì)算本次更新完成的信息流與上一次更新完成的信息流的差值數(shù)據(jù),并將計(jì)算出的所述差值數(shù)據(jù)推送至所述客戶(hù)端。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里公開(kāi)的發(fā)明后,將容易想到本申請(qǐng)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本申請(qǐng)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請(qǐng)的一般性原理并包括本申請(qǐng)未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本申請(qǐng)的真正范圍和精神由下面的權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本申請(qǐng)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本申請(qǐng)的范圍僅由所附的權(quán)利要求來(lái)限制。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。