.net - 如何使用 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 。我只替换RegisterAgent
为RegisterEdgeAgent
inStartup.cs
并将 the 设置endpointUri
为相应的中介之一。
当使用运行边缘代理的中介启动边缘代理时,边缘代理会按预期连接到它们的中介。
但是,当我尝试连接两个边缘代理(即使用代理 1 创建邀请并使用代理 2 接受它)时,连接状态仍处于“协商中”。
似乎有人必须照顾 InboxItemEvent 但我不知道应该如何实现。
任何想法都非常受欢迎!谢谢!
解决方案
您在上面链接的默认实现不会自动检查其中介代理中的新消息。在开发过程中解决此问题的一种方法是在两个边缘代理上设置一个计时器,该计时器将检查其相应中介代理中的新消息。您基本上会IEdgeClient.FetchInboxAsync
每 5 秒左右调用一次。这将处理您的连接并将其从状态移动Negotiating
到Connected
状态。
中介代理使用该字段InboxItemEvent
来通知新消息,因此他们可以让边缘客户端知道新的收件箱消息。他们可以做到这一点的一种方法是使用推送通知。由于您可能正在使用控制台应用程序,因此您没有此选项,因此设置计时器并手动提取消息是您最好的选择。
这正是https://github.com/hyperledger/aries-mobileagent-xamarin正在做的事情 - 一个 10 秒的计时器检查新消息。
推荐阅读
- hadoop - Hadoop mover 太慢了
- bash - 如何在mailx中插入名称字段
- python - Python/gspread - 用不同的值更新多个单元格?
- python - 如何计算每次迭代的平均值?
- bash - 主目录外壳
- java - 我正在尝试使用 java 在 mysql 中编辑表,我收到语法错误,但我看不到它在哪里
- javascript - 滚动图像绝对对齐,数据属性保存在滑块位置的按钮中
- angular - 如何以角度向下滚动ngOnInit?
- django - Django FilePathField
- spring-boot - http2的spring boot netty服务器导致413