Децентрализованное приложение чата с использованием IPFS
Я пишу децентрализованное приложение чата, используя nodejs
, expressjs
, angularjs
, socket.io
а также ipfs
Я использую libp2p для формирования узлов, которые будут общаться друг с другом через открытое соединение. Libp2p - это сетевой стек, модульный из проекта IPFS.
Libp2p позволяет мне строить nodes
которые способны принять у себя swarm
или же listening/ dialing
к одному. Я разработал до такой степени, что несколько узлов могут взаимодействовать друг с другом через входы на веб-странице angularjs (дополненной socket.io), но их IP-адреса и tcp
порты должны быть жестко закодированы.
Проблема, с которой я сталкиваюсь, заключается в том, как я могу справиться со сценарием, если неизвестное число пользователей присоединяется к этой системе и настраивает их узлы. Я сделал много исследований в DHT
особенно в его применении с торрентами, но я не близко к его применению.
Я не хочу запускать центральную систему, которая отслеживает пользователей, так как трекер отслеживает сеялки и рывки в потоках (теперь несколько избыточный из-за DHT)
В централизованном приложении чата каждый раз, когда пользователь входит или выходит, я могу отправить событие emit с сервера всем партнерам, используя socket.io, сигнализирующие об этом. Но с аналогом в децентрализованном приложении чата я очень сильно борюсь.
Мне нужно руководство, пожалуйста.
1 ответ
Вам не придется беспокоиться об этой проблеме, так как libp2p будет обрабатывать обнаружение и подключение узлов. В конце вы получаете примитив для адресации процесса, который всегда будет вызывать процесс, если он доступен в сети.
Недавно я работал над улучшением документации и учебных пособий для libp2p, перейдите по https://github.com/libp2p/js-libp2p/tree/master/examples и https://github.com/libp2p/js-libp2p, На следующей неделе появятся другие примеры, в том числе Peer Routing + Content Routing (он же DHT).
Ура!