IPFS群地址格式错误

时间:2018-09-01 17:01:23

标签: javascript networking blockchain p2p ipfs

我一直在使用IPFS(行星际文件系统),它是一个共享的p2p文件系统。在此javascript实现中,一切正常,但是,我发现我只能连接到'/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star'地址,这是您不应该在生产中使用的转发器地址。

我一直在网上询问,有人告诉我在群地址中添加行"/ip4/0.0.0.0/tcp/4001/ws",,然后在群地址中添加地址'/ip4/127.0.0.1/tcp/4001/ws/ipfs/QmdC3TgNDvYnJDDJE3sgNjhJNkmsfAvgogKVr4UVifKipM'(其中QmdC3TgNDvYnJDDJE3sgNjhJNkmsfAvgogKVr4UVifKipM是守护进程哈希,可以在终端中使用ipfs id进行检测)。但是,这似乎不起作用。 (不用担心,我将在生产中更改这些ID值。)

这是我正在使用的一些代码。已注释掉的群集地址无法连接,但是p2p-websocket-repeater可以:

import IPFS from 'ipfs';
import Room from 'ipfs-pubsub-room';

<...>
<THEN ON PAGE MOUNT...>
<...>

const ipfs = new IPFS({
      repo: "ipfs/sharedFolder",
      EXPERIMENTAL: {
        pubsub: true
      },
      config: {
        Addresses: {
          Swarm: [
            // '/ip4/127.0.0.1/tcp/4001/ws/p2p-websocket-star/',
            // '/ip4/127.0.0.1/tcp/4001/ws/ipfs/QmdC3TgNDvYnJDDJE3sgNjhJNkmsfAvgogKVr4UVifKipM',
            // '/ip4/192.168.0.2/tcp/4001/ws/ipfs/QmdC3TgNDvYnJDDJE3sgNjhJNkmsfAvgogKVr4UVifKipM'
            '/dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star'
          ]
        }
      }
    })

    ipfs.on('ready', async () => {

      const room = Room(ipfs, 'room-name')

      room.on('peer joined', (peer) => {
        console.log('Peer joined the room', peer)
      })

      room.on('peer left', (peer) => {
        console.log('Peer left...', peer)
      })

      room.on('message', (message) => { 
        console.log('got this message: ', message.data.toString());
      })

      // now started to listen to room
      room.on('subscribed', () => {
        console.log('Now connected!')
      })

      room.broadcast("hello there sailor")
    })

我也尝试使用:

// const ipfs = new IPFS({
//   EXPERIMENTAL: {
//     pubsub: true
//   },
//   repo: "ipfs/shared",
//   config: {
//     "Bootstrap": [
//       "/ip4/172.16.1.2/tcp/4001/ws/ipfs/QmdC3TgNDvYnJDDJE3sgNjhJNkmsfAvgogKVr4UVifKipM"
//     ]
//   },
// });

即使用Bootstrap而不是swarm,但是我也没有运气。一个考虑因素是,这都是在localhost上进行的,因此可能引起问题。在本地而不是在服务器上进行开发时,是否只能使用 使用p2p-websocket-star转发器?我确实确保在ipfs中允许Origin *解决CORS错误,所以我认为这不是问题。

如果有人有任何想法,请告诉我。谢谢!

编辑:

经过一番讨论后,我意识到我需要设置并运行自己的服务器来处理websocket,如此处所述:https://github.com/libp2p/js-libp2p-websocket-star(使用集合点命令)。

因此,在此之后(在终端中):

patientplatypus:~/Documents/zennify.me/backend:13:47:23$rendezvous --port=9090 --host=127.0.0.1
Listening on: http://127.0.0.1:9090

我尝试在浏览器中使用它:

const ipfs = new IPFS({
  repo: "ipfs/sharedFolder",
  EXPERIMENTAL: {
    pubsub: true
  },
  config: {
    Addresses: {
      Swarm: [
        '/ip4/127.0.0.1/tcp/9090/ws/p2p-websocket-star'
      ]
    }
  }
})

然后我在加载页面时收到此消息:

Swarm listening on /ip4/127.0.0.1/tcp/9090/ws/p2p-websocket-star/ipfs/QmXxNNekpYDbpfW7gtZP4vYeokG6QjgqnvMMTX2ZmTvCWn
Tasks.vue?cba9:125 Now connected!
10Tasks.vue?cba9:120 got this message:  hello there sailor
client.js?6157:18 WebSocket connection to 'wss://nyc-2.bootstrap.libp2p.io/' failed: Error during WebSocket handshake: Unexpected response code: 502

那么几件事

  • 它看到一群人在听!很好,建议我正在连接服务器。 :D

  • 它将自己的消息广播回自身:D

  • 它不能广播到另一个也打开的网页:<< / p>

  • 它没有将其他选项卡视为已连接的同级项:<

  • 是否一直尝试(失败)将网络套接字连接到NYC?为什么? :<< / p>

无论如何,如果有人有任何想法,这就是我要解决的问题。谢谢。

0 个答案:

没有答案