整個(gè)app的時(shí)機(jī)就是基于事件驅(qū)動(dòng)來設(shè)計(jì)的。
舉例:當(dāng)app更新時(shí),這時(shí),服務(wù)端向客戶端推一個(gè)更新事件過來(推,不一定指的是推送,可以是websocket,也可以是心跳去檢測)。
然后客戶端收到這個(gè)事件后,就可以去處理更新了。處理更新的方式可以為:先詢問后端是否有更新——> 更新
如下圖為APP應(yīng)用列表的設(shè)計(jì)??梢韵群唵卫斫鉃榫艑m格的一個(gè)應(yīng)用列表
其功能包含:
- 動(dòng)態(tài)添加應(yīng)用
- 刪除應(yīng)用
- 更新應(yīng)用
難點(diǎn)如何只在有變更的時(shí)候,才去請求服務(wù)端,獲得最近的變更數(shù)據(jù),否則都加載本地緩存中的數(shù)據(jù)。
因此我們選擇了事件驅(qū)動(dòng)的方式,服務(wù)端判斷有更新了之后,下發(fā)到客戶端一個(gè)事件。收到事件的客戶端才會去請求服務(wù)端,查看最近的變更數(shù)據(jù)。并保存到本地緩存中。
如下圖為應(yīng)用列表的流程圖。

工作臺 (1).png
- 檢查是否有更新事件:基于事件驅(qū)動(dòng),直接檢查本地緩存中是否存在“檢查應(yīng)用列表更新”的事件。
- 請求服務(wù)器檢查工作臺中有變更的應(yīng)用列表:接收到事件后,請求服務(wù)器檢查應(yīng)用列表是否有變更,將返回已變更應(yīng)用的詳細(xì)信息。
- app客戶端加載應(yīng)用列表的時(shí)候,是從本地緩存中加載的。所以在有應(yīng)用有變更的情況下,應(yīng)該更新本地的緩存。