You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aries-framework-go本地运行双Agent时DID交换连接失败咨询

问题解答

1. didcomm:transport/queue工作机制

这个是Hyperledger Aries Go框架默认提供的内存级内部传输实现,仅在当前Agent进程内部生效,所有DIDComm消息只会存入进程内的内存队列,不会对外发送,也不会监听任何网络端口。你运行的两个Agent是完全独立的进程,互相无法通过这个默认传输层通信,所以5005端口的Agent发送的连接请求根本到不了5000端口的Agent,最终连接状态变为abandoned,5000端口Agent也查不到任何连接记录。

2. 自定义InboundTransport连接被拒的原因

你自己实现的inboundTransport结构体只定义了Endpoint方法返回服务地址,核心的Start方法是空实现,没有真正启动HTTP服务监听指定的5001/5006端口。相当于你只告诉了对方你的服务地址,但没有实际在该端口上启动服务接收请求,自然会报连接被拒绝的错误。

3. 缺少的配置及修复方案

不要自行实现InboundTransport,框架已经提供了标准的HTTP传输层实现,按以下步骤修改即可:

  • 导入官方HTTP传输包:
import "github.com/hyperledger/aries-framework-go/pkg/transport/http"
  • 初始化Aries实例时传入官方的HTTP Inbound实例:
func NewDidClient(port int32) (*DidClient, error) {
    // 启动官方HTTP Inbound服务,监听port+1端口
    inbound, err := http.NewInbound(fmt.Sprintf(":%d", port+1), "", nil)
    if err != nil {
        return nil, err
    }
    framework, err := aries.New(
        aries.WithInboundTransport(inbound),
        aries.WithStoreProvider(mem.NewProvider()),
        aries.WithProtocolStateStoreProvider(mem.NewProvider()),
    )
    // 后续原有逻辑保持不变
}
  • 本地同时运行两个Agent不会产生冲突,只要保证两个Agent的业务端口(5000/5005)、Inbound端口(5001/5006)不被其他程序占用即可。

内容的提问来源于stack exchange,提问作者Ana Franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:54:01