我想使用hyperledger aries dotnet框架实现两个边缘代理。两个代理都应该使用中介代理,即来自一个边缘代理的呼叫应该被传递到第二个边缘代理的中介代理,然后转发到第二个边缘代理。我使用路由示例中的代码设置了两个中介代理:https://github.com/hyperledger/aries-framework-dotnet/tree/master/samples/routing。我的两个边缘代理基于aspnetcore示例:https://github.com/hyperledger/aries-framework-dotnet/tree/master/samples/aspnetcore。我只在Startup.cs中将RegisterAgent替换为RegisterEdgeAgent,并将endpointUri设置为相应的中介之一。
当使用运行的中介代理启动边缘代理时,边缘代理会按预期连接到它们的中介。
但是,当我尝试连接两个边缘代理时(即,用代理1创建一个缩写,并用代理2接受它),连接状态保持为“协商”。
似乎必须有人来管理InboxItemEvent,但我不知道该如何实现。
任何想法都非常受欢迎!谢谢!
发布于 2020-10-15 04:11:54
上面链接的默认实现不会自动检查其中介代理中的新消息。在开发期间绕过此问题的一种方法是在两个边缘代理上设置一个计时器,该计时器将检查其相应中介代理中的新消息。基本上每隔5秒左右就会调用一次IEdgeClient.FetchInboxAsync。这将处理您的连接并将其从Negotiating状态移动到Connected状态。
中介代理使用字段InboxItemEvent来通知新消息,因此它们可以让边缘客户端知道新的收件箱消息。他们可以这样做的一种方式是使用推送通知。由于您可能正在使用控制台应用程序,因此您没有此选项,因此设置一个计时器并手动提取消息是您最好的选择。
这正是https://github.com/hyperledger/aries-mobileagent-xamarin正在做的事情--一个10秒的计时器来检查新消息。
https://stackoverflow.com/questions/64048570
复制相似问题