【问题标题】:Can we connect the gateway only once in hypeledger fabric using node SDK我们可以使用节点 SDK 在超级账本结构中只连接一次网关吗
【发布时间】:2020-02-15 01:21:55
【问题描述】:

我需要帮助查询与通过节点 sdk 连接到客户端的超级账本结构网关相关的查询。我使用下面的代码编写了一些连接到结构网络的 API。

const ccpPath = path.resolve(__dirname, '..', 'config', 'connection.json');

const gateway = new Gateway();

await gateway.connect(ccpPath, {
    wallet,
    identity: Username,
    discovery: {
        enabled: true,
        asLocalhost: false
    }

});

现在我必须使用上面的代码来连接每个调用 API 的控制器,但是,我想一次性使用它,所以一旦连接到网络,我就不需要一次又一次地连接。 有什么方法可以实现吗?如果可能的话给我建议,这样我就可以在我的 API 中实现它。 如果需要更多信息,请告诉我?

提前致谢

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

    网关设计为可重复使用,实际上您应该避免不断创建和断开网关,因为这可能会导致网络问题。

    网关要实现的一件事是它们与身份以及结构网络(但不是通道,网关可以连接到多个通道)具有 1-1 关系。所以网关的正确使用是为你的网络的每个不同的身份设置一个网关,然后重复使用这个网关。

    如果您计划让许多不同的身份连接,那么您可能需要考虑对网关使用过时的策略,因为它们会保持网络连接,例如,如果某个身份在一段时间内没有与网络交互,那么当他们稍后尝试交互时,您可以断开该网关并为该身份创建一个新的。

    【讨论】:

      【解决方案2】:

      是的,当然。

      连接函数中的inglobe,并将网关声明为函数外部。

      let gateway;
      function connect() {
        const ccpPath = path.resolve(__dirname, '..', 'config', 'connection.json');
      
        gateway = new Gateway();
      
        await gateway.connect(ccpPath, {
          wallet,
          identity: Username,
          discovery: {
              enabled: true,
              asLocalhost: false
          }
      
        });
      }
      

      接下来从 app.js 或您的应用程序的起点,调用该函数并连接。 不需要每次都连接,一次连接即可。

      【讨论】:

      • 嗨@RicNtt,感谢您的解决方案,但是我仍然有一些疑问,例如如何将用户名作为身份传递给此函数?
      • 嗨@RicNtt 我已经实现了你的答案,但是遇到了一些我需要讨论的问题。
      • 嘿,我正在使用这个解决方案,它在我的项目中正常工作。如果解决了,请将其设置为答案,您可能遇到了与您的项目相关的其他一些问题。也许它们与 Node.js 的关系比 SDK 更重要。
      • Np。请将此设置为“ANSWER”。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多