Адрес роя 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 это хэш демона, который можно 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

  • Он не может транслироваться на другую открытую веб-страницу:<

  • Другие вкладки не отображаются как связанные одноранговые узлы:<

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

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

0 ответов

Другие вопросы по тегам