如何在调用链代码时通知客户端应用程序?

时间:2016-11-23 16:34:10

标签: blockchain hyperledger ethereum hyperledger-fabric

当调用链代码时,是否有办法调用REST API(外部),以便可以在新事务上通知客户端应用程序。

除了REST之外,还有其他选择吗?

2 个答案:

答案 0 :(得分:2)

使用事件会更好 https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md#35-events

  

验证对等体和链代码可以在网络上发出事件   应用程序可以监听并采取措施。有一套   预定义事件和链代码可以生成自定义事件。活动   被一个或多个事件适配器使用。适配器可以进一步提供   使用Web钩子或Kafka等其他工具的事件。

应用程序可以从Fabric订阅事件流,并侦听您的链代码生成的消息。

可以在此处找到有关如何使用事件的示例: https://github.com/hyperledger/fabric/tree/master/examples/events/block-listener

答案 1 :(得分:1)

要添加到谢尔盖的答案,有3种类型的事件。

  1. BLOCK EVENTs,在分类帐更改时创建。
  2. 拒绝事件,在发生任何错误时创建(在用户链代码或系统链代码中)
  3. CHAINCODE EVENTs,它是用户句柄,允许用户链代码创建事件。 [我注意到奇怪的是,根据当前设计,每次调用只允许一个CHAINCODE EVENT]
  4. 您可以在您的端部运行事件监听器/客户端,监听gRPC端口,(您可以从core.yaml文件获取端口)或者您甚至可以参考Sergey提到的示例。

    在您的情况下,我猜您正在寻找成功的交易。在这种情况下,您应该听 BLOCK事件和REJECTION事件。触发调用时收到的事务UUID可用于扫描事件并在匹配时触发操作。 另请注意,如果事务导致REJECTION EVENT,那么它将没有BLOCK EVENT。 希望这可以帮助。