如何解决当失去与对等方的连接时,如何使结构网络addBlockListener自动重新连接?
使用结构网络NodeJS sdk v2.2,我实现了一个必须侦听所有块并对其进行解析的块侦听器。
它应该具有弹性,并在对等方掉落或暂时无法到达时自动重新连接。在早期版本的SDK中,我们可以仅使用“ onError”回调并重新连接。现在,该部分已被抽象掉,您只有以下内容:
network.addBlockListener(async (blockEvent: BlockEvent) => {
console.log(blockEvent.blockNumber);
});
杀死同伴后,网关和网络足够智能,可以自动重新连接。但是,屏蔽监听器丢失了。为了完整起见,这是删除对等容器时的错误日志。
[ServiceEndpoint]: Error: Failed to connect before the deadline on Eventer- name: peer-0.peer.org1,url:grpcs://peer-0.peer.org1:7051,connected:false,connectAttempted:true
[ServiceEndpoint]: waitForReady - Failed to connect to remote gRPC server peer-0.peer.org1 url:grpcs://peer-0.peer.org1:7051 timeout:3000
[Eventer]: checkConnection[peer-0.peer.org1:3] Event Service grpcs://peer-0.peer.org1:7051 Connection check failed :: Error: Failed to connect before the deadline on Eventer- name: peer-0.peer.org1,connectAttempted:true
[EventService]: send[peer-0.peer.org1] - #4 - no targets started - Error: Event service peer-0.peer.org1 is not connected
[BlockEventSource]: Failed to start event service message=Event service peer-0.peer.org1 is not connected,stack=Error: Event service peer-0.peer.org1 is not connected
[ServiceEndpoint]: Error: Failed to connect before the deadline on Eventer- name: peer-0.peer.org1,connectAttempted:true
[ServiceEndpoint]: waitForReady - Failed to connect to remote gRPC server peer-0.peer.org1 url:grpcs://peer-0.peer.org1:7051 timeout:3000
重新启动后,我可以再次执行事务,但不再发生阻止事件。
是否可以捕获某种“断开”事件,轻松创建具有连接错误处理功能的自定义块事件侦听器或自动重新连接blocklistener的另一种方法?
解决方法
对等断开连接应由v2.2 SDK透明处理,无需您在块侦听器中处理重新连接。块事件的排序和重复数据删除也在内部处理,因此您的侦听器应该完全不知道事件对等项之间的任何故障转移。
如果这不适用于最新的v2.2.x版本,请在Jira中提出一个错误报告,并提供尽可能多的详细信息,以便重现该问题:https://jira.hyperledger.org/projects/FABN
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。