我正在尝试使用结构节点 SDK 将客户端应用程序连接到部署在远程云实例上的结构网络。为此,我使用已部署实例的 IP 地址修改了我的连接配置文件。一切正常,直到提交交易发生。在提交事务时,它仍然显示无法连接到本地主机端口。可能是什么问题呢?
2 回答
首次使用
discovery: { enabled: true, asLocalhost: false } ?
那么您需要通过编辑 /etc/hosts 将域名映射到 IP
192.168.1.2 peer0.org1.example.com
192.168.1.3 peer0.org2.example.com
192.168.1.4 ca.org2.example.com
192.168.1.5 ca.org1.example.com
192.168.1.6 orderer.example.com
一些文档:
当结构网络在 docker-compose 中运行并且 node.js 应用程序在 docker 容器之外运行时,有必要修改从发现服务返回的地址。发现服务将 peer 和 orderer 的地址视为存在于虚拟系统中的主机名和端口,但是在 docker 之外运行的 node.js 应用程序将只知道端点作为 localhost 和端口。在 docker-compose 文件中,注意 Docker 是如何映射端口地址的,在使用服务发现时这些必须相同。使用 - 7061:7051 将不起作用,因为应用程序无法看到对等方的发现服务所看到的虚拟系统和端口地址。
将 asLocalhost 与 true 或 false 一起使用,默认为 false。
await gateway.connect(connectionProfile, {discovery: { enabled: true, asLocalhost: true}});
const network = await gateway.getNetork('mychannel'); 请注意以下来自 docker-compose 文件的对等点的定义。端口号是相同的,并且已与主机名 peer0.org1.example.com:7051 一起定义,用于对等和八卦设置。在 docker 容器之外运行的 node.js 结构客户端应用程序将使用 localhost:7051。有主机名到“localhost”的映射,但没有端口地址的映射。
在您的 gateway.connect 上,您是否指定了 Discovery Options discovery: { enabled: true, asLocalhost: false }
?
asLocalhost 的默认值为 true,这可能是您的问题。