如何使用 dotnet aries 框架内的中介代理连接两个超级账本 aries 边缘代理?
Posted
技术标签:
【中文标题】如何使用 dotnet aries 框架内的中介代理连接两个超级账本 aries 边缘代理?【英文标题】:How to connect two hyperledger aries edge agents using mediator agents within the dotnet aries framework? 【发布时间】:2021-01-10 20:55:15 【问题描述】:我想使用 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,但我不知道应该如何实现。
非常欢迎任何想法!谢谢!
【问题讨论】:
【参考方案1】:您在上面链接的默认实现不会自动检查其中介代理中的新消息。在开发过程中解决此问题的一种方法是在两个边缘代理上设置一个计时器,该计时器将检查其相应中介代理中的新消息。您基本上会每隔 5 秒左右调用一次IEdgeClient.FetchInboxAsync
。
这将处理您的连接并将其从Negotiating
移动到Connected
状态。
中介代理使用字段InboxItemEvent
来通知新消息,因此他们可以让边缘客户端知道新的收件箱消息。他们可以做到这一点的一种方法是使用推送通知。
由于您可能正在使用控制台应用程序,因此您没有此选项,因此最好设置计时器并手动提取消息。
这正是 https://github.com/hyperledger/aries-mobileagent-xamarin 正在做的事情 - 一个 10 秒的计时器检查新消息。
【讨论】:
以上是关于如何使用 dotnet aries 框架内的中介代理连接两个超级账本 aries 边缘代理?的主要内容,如果未能解决你的问题,请参考以下文章