首页 > 解决方案 > 如何使用 dotnet aries 框架内的中介代理连接两个超级账本 aries 边缘代理?

问题描述

我想使用 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 。我只替换RegisterAgentRegisterEdgeAgentinStartup.cs并将 the 设置endpointUri为相应的中介之一。

当使用运行边缘代理的中介启动边缘代理时,边缘代理会按预期连接到它们的中介。

但是,当我尝试连接两个边缘代理(即使用代理 1 创建邀请并使用代理 2 接受它)时,连接状态仍处于“协商中”。

似乎有人必须照顾 InboxItemEvent 但我不知道应该如何实现。

任何想法都非常受欢迎!谢谢!

标签: .nethyperledgeraries

解决方案


您在上面链接的默认实现不会自动检查其中介代理中的新消息。在开发过程中解决此问题的一种方法是在两个边缘代理上设置一个计时器,该计时器将检查其相应中介代理中的新消息。您基本上会IEdgeClient.FetchInboxAsync每 5 秒左右调用一次。这将处理您的连接并将其从状态移动NegotiatingConnected状态。

中介代理使用该字段InboxItemEvent来通知新消息,因此他们可以让边缘客户端知道新的收件箱消息。他们可以做到这一点的一种方法是使用推送通知。由于您可能正在使用控制台应用程序,因此您没有此选项,因此设置计时器并手动提取消息是您最好的选择。

这正是https://github.com/hyperledger/aries-mobileagent-xamarin正在做的事情 - 一个 10 秒的计时器检查新消息。


推荐阅读