【问题标题】:how to get peers list using go-ipfs-api?如何使用 go-ipfs-api 获取对等列表?
【发布时间】:2021-05-28 13:44:01
【问题描述】:

我是 ipfs 的新手,尝试使用 go-ipfs-api 获取 ipfs 信息。以下是我的代码:

package main

import (
         "fmt"
         "context"
         "os"
         "net/http"
         "github.com/prometheus/client_golang/prometheus"
         "github.com/prometheus/client_golang/prometheus/promhttp"
         "github.com/ipfs/go-ipfs-api"
)
 
 var sh *shell.Shell
 
 func main() {
         sh := shell.NewShell("localhost:5001")
         cid, err := sh.SwarmPeers()
         if err != nil {
                 fmt.Fprintf(os.Stderr, "error: %s", err)
                 os.Exit(1)
         }
         fmt.Printf("added %s", cid)
 }

这个sh.SwarmPeers 需要一些上下文作为参数。我没有得到我需要传递什么参数来获取对等列表。另外,我应该使用哪些 API 函数来获取 ipfs 上存在的文件总数和文件的总大小?请帮忙。如果有教程,请分享。它将帮助我理解使用其他功能。任何帮助将不胜感激。

【问题讨论】:

    标签: go ipfs


    【解决方案1】:

    上下文是一个 Golang context,它有助于跟踪诸如截止日期或操作取消之类的事情。在这种情况下,由于您正在对本地 IPFS 守护程序进行 HTTP 调用,因此您可能希望取消该功能,因为它花费的时间太长或者您的应用程序不再关心并且上下文允许您处理该用例。

    您可以通过context.Background() 获得背景上下文(即永远存在并且永远不会被取消)。如果要设置超时,可以将该背景上下文传递给context.WithTimeout。查看有关上下文的 Golang 文档以获取更多信息。

    【讨论】:

    • 感谢您的回复。它帮助到我。你能帮助在同一个程序中获取文件总数及其大小吗?
    • 您必须更准确地了解您要查找的内容。基本上每个 CLI 命令都有一个对应的 HTTP 等价物,其中绝大多数是由 go-ipfs-api 公开的。例如,您可以使用ipfs ls 的等效项来检查给定根目录下的目录,ipfs pin ls 用于固定 CID 列表,或ipfs repo stat 用于有关存储库大小和块数的信息。
    • 我发现使用这些命令作为go-ipfs-api 函数存在问题。这个问题的答案是可以接受的。如有更多疑问,我将发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 2019-06-14
    • 2019-02-10
    • 1970-01-01
    相关资源
    最近更新 更多