使用IPFS的去中心化聊天应用程序

9
我正在使用nodejs, expressjs, angularjs, socket.ioipfs 构建一个去中心化聊天应用程序。我正在使用libp2p来形成节点,它们将通过开放连接相互通信。Libp2p是从IPFS项目模块化出来的网络堆栈。
Libp2p允许我构建节点,它们能够托管swarm监听/拨号至某个节点。我已经开发到了这一步,通过angularjs(辅以socket.io)网页输入,多个节点可以相互通信,但它们的IP地址和tcp端口需要硬编码。
我面临的问题是,如果未知数量的用户加入此系统并设置自己的节点,那么我该如何处理这种情况。我进行了大量关于DHT的研究,特别是它在Torrent中的应用,但目前还没达到实际应用的地步。
我不想运行一个中央系统来跟踪用户,就像Tracker跟踪Torrent中的Seeder和Leecher一样(由于DHT而有些多余)。
在集中式聊天应用程序中,每当用户进入或离开时,我可以从服务器向所有同行发送一个发射事件,使用socket.io将其通知给其他用户。但是,在分散式聊天应用程序中,相当的实现方式正是我非常困惑的事情。
请给予一些指导。
1个回答

3
您不需要特别担心这个问题,因为libp2p将处理节点的发现和连接。最终,您将获得一个用于进程寻址的基元,如果该进程在网络中可访问,则始终会拨号到该进程。
我最近一直在为libp2p编写更好的文档和教程,请前往https://github.com/libp2p/js-libp2p/tree/master/exampleshttps://github.com/libp2p/js-libp2p。下周将提供更多示例,包括Peer Routing + Content Routing(也称为DHT)。
干杯!

嗨,David。非常感谢您的回复。我一定会留意这个例子的。顺便说一下,我们在Webnode上聊天了几个月前,我提交了这个PR https://github.com/ipfs/js-libp2p-ipfs-nodejs/pull/39。如果我能在这个新的repo中提供帮助/贡献,我会很高兴知道。请告诉我。 - Varun Agarwal
太好了!再次问候Varun!请查看https://github.com/libp2p/js-libp2p/issues/6#issuecomment-313970615上的最新更新,有多个地方需要您的帮助,您是否已经查看了https://waffle.io/libp2p/libp2p上的Waffle板?它包含所有libp2p存储库中的问题,因此很容易理解哪些问题已准备好进行处理,哪些问题是重要的。 - David Dias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接