Неправильный адрес IPFS - PullRequest
       53

Неправильный адрес IPFS

0 голосов
/ 01 сентября 2018

Я играл с 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 - это хэш демона, который может быть ssen используя ipfs id в терминале). Тем не менее, это не похоже на работу. (Не волнуйтесь, я изменю эти значения идентификатора в prod).

Вот часть кода, который я использую. Закомментированные рои-адреса не подключаются, но 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 вместо роя, но мне тоже не повезло. Одним из соображений является то, что все это происходит на локальном хосте, так что это может вызвать проблемы. Это тот случай, когда вы можете только использовать ретранслятор p2p-websocket-star при локальной разработке, а не на сервере? Я действительно разрешил Allow Origin * в ipfs обойти ошибки CORS, поэтому не думаю, что это проблема.

Если у кого-нибудь есть идеи, пожалуйста, дайте мне знать. Спасибо!

РЕДАКТИРОВАТЬ:

После некоторого обсуждения я пришел к выводу, что мне нужно настроить и запустить собственный сервер для обработки веб-сокетов, как упомянуто здесь: https://github.com/libp2p/js-libp2p-websocket-star (с использованием команды rendezvous).

Итак, после этого (в терминале):

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>

  • Он не видит другие вкладки в качестве подключенных пиров: <</p>

  • Он продолжает пытаться (и не удается) подключить веб-сокет к Нью-Йорку? ЗАЧЕМ? <</p>

В любом случае, вот где я нахожусь в этой проблеме, если у кого-то есть идеи. Спасибо.

...