使用 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"
step
的 table_delta
消息。这允许您的应用程序导航分叉并确保您的应用程序与最长链的状态绝对同步。
查看 https://docs.dfuse.io/ 上的文档并搜索 with_progress
了解更多详细信息。
我正在使用 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"
step
的 table_delta
消息。这允许您的应用程序导航分叉并确保您的应用程序与最长链的状态绝对同步。
查看 https://docs.dfuse.io/ 上的文档并搜索 with_progress
了解更多详细信息。