我还没有收到任何活动通知,我想知道我是否遗漏了一些东西。
我按照Fabric Composer网站上的说明在我的cto模型中定义了BasicEvent,并添加了用于在事务中创建和发出事件并更新网络的代码。我创建了一个单独的eventListener.js程序,该程序使用来自网站的代码示例使用businessNetworkConnection订阅事件。
在我启动eventListener.js应用程序后,它似乎正在侦听(在控制台中收到连接状态消息后,没有其他任何事情发生......它不会返回到正常的提示行。)
然后我执行应该发出事件的事务并且它成功运行但在eventlistener.js正在运行的另一个终端窗口中没有收到任何事件。
这是eventListener.js程序的关键部分:
businessNetworkConnection.connect(connectionProfile, businessNetworkIdentifier, participantId, participantPwd)
.then((result) => {
businessNetworkDefinition = result;
console.log('Connected: BusinessNetworkDefinition obtained=' + businessNetworkDefinition.getIdentifier());
});
businessNetworkConnection.on('event', (event) => {
// event: { "$class": "org.namespace.BasicEvent", "eventId": "0000-0000-0000-000000#0" }
console.log(event);
});

businessNetworkConnection.on(' event',(event)...命令是否会导致程序在侦听时显示挂起?
如果是这样,是否还有其他措施可以解决问题所在?
我在本地Docker上使用v0.6 HLF。
答案 0 :(得分:0)
我认为您的问题是,在注册听众之前,您不必等待连接businessNetworkDefinition。请记住,then
块是异步执行的,并且您的以下businessNetworkConnection.on
代码将立即执行。
在连接businessNetworkDefinition之后,您应该添加第二个then
块来注册您的侦听器。
e.g。
return adminConnection.connect('hlfv1', 'admin', 'adminpw')
.then(() => {
return BusinessNetworkDefinition.fromDirectory(path.resolve(__dirname, '..'));
})
.then((businessNetworkDefinition) => {
return adminConnection.deploy(businessNetworkDefinition);
// return true;
})
.then(() => {
businessNetworkConnection = new BusinessNetworkConnection();
return businessNetworkConnection.connect('hlfv1', 'my-network', 'admin', 'adminpw');
})
.then(() => {
businessNetworkConnection.on('event', (event) => {
console.log( '****** received the event ' + JSON.stringify(businessNetworkConnection.getBusinessNetwork().getSerializer().toJSON(event)));
});
});
答案 1 :(得分:0)
我为Hyperledger团队开发的基本示例应用程序编写了示例代码。您可以从以下代码段中查看:SampleEventListener