我们可以使用节点 SDK 在 hyperledger fabric 中只连接一次网关吗

Can we connect the gateway only once in hypeledger fabric using node SDK

我需要帮助解决与通过节点 sdk 连接到客户端的 hyperledger fabric 网关相关的查询。我写了一些 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 中实施它。 如果需要更多信息,请告诉我?

提前致谢

当然可以。

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 或您的应用程序的起点,调用该函数即可连接。 不需要每次都连接,连接一次即可。

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

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

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