強大的 dfuse history API 給咱們帶來了高效的鏈數據獲取途徑,讓咱們的 dapp 在用戶體驗上了一個臺階。node
不會錯過一個心跳react
pendingActions 待處理的action。
ensureStream 返回steam實例。
commit 處理pendingActions中的action,並告訴dfuse server 當前處理的blockid,下次dfuse server推送的action就是基於你告訴dfuseserver的lastCommittedBlockNum,其中steam.mark()就是告訴dfuseserver的lastCommittedBlockNum的函數。git
1.建立一個dfuse client
2.將Engine類託管dfuse client
3.調用streamActionTraces,接收ActionTraces流,於此同時接管dfuse的listening、action_trace、progress事件
4.當觸發action_trace事件當時候,會調用commit方法(不會錯過心跳在該方法裏實現,請看函數裏commit的解釋),而後循環處理pendingActions中等待的action。等處理完以後,向pendingActions數組傳入當前接收action,進入排隊github
若是這個服務想要從頭同步的話,個人理解應該是在listening事件的時候就告訴dfuseserver 當前同步的blockId,這樣就會從你想要開始的地方推送數據流。api
若是這個服務想要從頭同步的話,streamActionTraces 裏有個stream option 裏有個start block,這樣就會從你想要開始的地方推送數據流。數組
剛接觸dfuse,若是有不對的地方請指出,謝謝。瀏覽器
不會錯過一個心跳
如何保證dfuse流持續鏈接
其餘
Javascript例子
Javascript例子_live
Go例子
node.js例子
GraphQL API react demo
GraphQL API react live
查詢語言規範
github
graphql編輯器和api文檔瀏覽器_liveapp