使用 dfuse 流时如何有效地保持同步 API

How to effectively stay in-sync when using dfuse streaming API

我正在使用 dfuse streaming API 构建一个基于 EOS 的应用程序。 我想保持流经我的智能合约的所有数据的同步视图。

我想确保我始终保持同步,这样我就不会错过任何一个区块。使用 dfuse 流 API,我该如何实现?

使用 Websocket API 的 with_progress 功能,您将在处理每个块后收到一条 progress 消息。

对于给定的流(对应于一个请求和关联的 req_id),当您收到一个块的 progress 时,您保证已经看到它包含在您的文件中的所有内容查询(get_action_traces 的操作或 get_table_rows 的行)。

如果您跟踪 block_num and/or block_id,在 disconnection/reconnections 后,您可以在您的请求中提供它,并保证永远不会错过击败,即使这意味着您正在重新处理 1M 块。

截至 2018 年 11 月 22 日,get_table_rows 请求将流式传输包含 "undo"/"redo" steptable_delta 消息。这允许您的应用程序导航分叉并确保您的应用程序与最长链的状态绝对同步。

查看 https://docs.dfuse.io/ 上的文档并搜索 with_progress 了解更多详细信息。