问题标签 [go-libp2p]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 为什么我在此 libp2p 代码中收到类型错误?
我正在尝试初始化两个libp2p.Host
实例之间的连接。为此,我需要获得一个peerstore.PeerInfo
. 显而易见的方法是获取由multiaddr.Multiaddr
返回的实例Host.Addrs
并将其传递给peerstore.InfoFromP2pAddr
.
很简单,对吧?
这是一些可以做到这一点的代码:
上面的代码不会编译。编译器返回以下错误:
这似乎与gx
的路径管理有关,但我不确定如何。我唯一的交互gx
是在以推荐的方式安装 libp2p 时,即make && make deps
从 libp2p 根目录运行,这在语义上等同于:
是什么赋予了? 为了编译我的程序,我必须做什么?
go - 如何从主机获取 PeerInfo?
我正在尝试PeerInfo
从一个libp2p.Host
实例中获取一个。我可以multiaddr.Multiaddr
通过调用获取 s列表Host.Addrs()
,但我无法将它们转换为有效的peerstore.PeerInfo
.
这是我的尝试,它因错误而恐慌panic: invalid p2p multiaddr
。
我怎样才能peerstore.PeerInfo
从 a 中得到 a libp2p.Host
?
ipfs - 保存到 IPFS 之前使用 Buffer
我正在按照 IPFS github示例保存到 IPFS:
Buffer
我注意到字符串在保存之前被转换为二进制。有人可以解释一下这里的用法Buffer
吗?保存图像或视频文件怎么样?
go - 尝试编组和解组 libp2p AddrInfo
我正在使用 libp2p Go 库来制作 p2p 网络堆栈。
我需要将消息单播给我网络上的其他对等方。我想将 AddrInfo 结构存储在我单播的消息中,以便我可以发回响应。
以下是 libp2p 库代码:
AddrInfo 结构包含
多地址如下
这是我使用 libp2p 库的代码:
我像这样将它包含在我的消息结构中
当我编组我的消息结构然后尝试解组时,我收到以下错误:
我无法编辑 libp2p 源代码,但需要在我的结构中添加 AddrInfo。
server - 创建 go-libp2p 出口网关
我有一个应用场景,期望一对传统的客户端和服务器通过P2P集群相互通信。最简单的设置是客户端和服务器对通过 2 个中间 P2P 代理进行交互。因此,网络拓扑是客户端 <--> peer1 <--> peer2 <--> server
使用 go-libp2p/http_proxy/proxy.go 可以很容易的让客户端实现客户端 <--> peer1 <--> peer2 的部分路径。但是,目前还不清楚如何实现 peer2 <--> 服务器。困难在于服务器不是p2p主机。因此,如果无法为非 p2p 服务器正确创建 multiaddr,则 peer2 无法连接到非 p2p 对等体。本质上,我希望 peer2 充当出口网关,在 P2P 网络和非 P2P 主机之间架起桥梁。
有什么解决这个问题的建议吗?谢谢。
erlang - 客户端之间的 libp2p yamux 协议协商不成功(go-libp2p 和 erlang-libp2p)
我是 libp2p 的新手,我正在尝试通过标准 TCP 传输建立从一个 libp2p 对等体 (erlang-p2p) 到另一个 (go-libp2p) 的成功连接。erlang 客户端是稳定和维护的客户端,我正在尝试在 golang 中复制所述客户端。
两个 erlang 客户端之间的初始协商过程类似于基于读取正在发送/接收的原始数据(客户端 A 正在连接到客户端 B):
注意:yamux 协议 id 中前导反斜杠的省略是有意的,因为那是 erlang 客户端发送的内容。
上述建立后,就可以创建会话了。但是,将客户端 B 换成我的简单 go-libp2p 主机,我无法成功协商步骤 2。我用于简单 go-libp2p 客户端的代码如下:
当erlang客户端尝试连接go客户端时,多流协议协商成功,但是在收到yamux协议id后,go客户端发回na
表示不支持该协议,尽管我已经明确声明了libp2p在配置选项中使用 yamux。此外,根据此处的文档,即使使用默认配置选项,似乎也应该支持 yamux/1.0.0。
我觉得我可能遗漏了一些基本的东西,感谢您的帮助。
我已经尝试过的东西:
- 删除所有配置并使用默认的 libp2p 设置
- 将
NoSecurity
选项添加到配置中(看起来 erlang 客户端似乎没有就我所知的任何安全性进行协商) - 将 Muxer ID 更改
"yamux/1.0.0"
为"/yamux/1.0.0"
libp2p - Libp2p 中的协议到底是什么?
我刚刚阅读了此处文档中的协议部分,我不得不说它给我留下的问题多于答案。
我从中得到的基本上是该协议允许节点以特定方式进行通信。但我知道它已经被称为协议,我不必阅读这篇文章。有关协议 ID 和协议协商的信息也没有提供太多价值。
我认为我缺少的是:
- libp2p中的协议结构是什么?它提供什么接口,遵循什么规则等
- 不要只列出内置协议(Ping、Identify、secio 等)的示例,而是展示如何使用它们并将其与它们提供的接口相关联。
- 也许还有一个快速展示如何编写自定义协议的高级部分。
有人愿意提供更好的解释吗?
go - 未定义:运行 go libp2p 时遇到 ctx
代码如下,它是go-libp2p的官方演示。我没有遇到任何其他引用或未定义的错误
导入如下:
go - 运行 go-libp2p-http 示例时的错误
问题在于go func。错误消息是go 中的表达式必须是函数调用
错误是
命令行参数
.\sever.go:18:5: go 中的表达式必须是函数调用
http - 使用 libp2p-http 构建 HLS 的问题
我打算用libp2p实现一个经典的HLS示例,如下 https://hackernoon.com/building-a-media-streaming-server-using-go-and-hls-protocol-j85h3wem 但是我遇到了以下错误:</p>
404页面不存在
我构建 linsten 的代码:
我的代码构建客户端:
我的代码构建服务器:
新主机: