登录
首页 >  Golang >  Go问答

使用libp2p在多个主机之间建立流并发送数据

来源:stackoverflow

时间:2024-03-04 13:24:26 249浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《使用libp2p在多个主机之间建立流并发送数据》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我的问题涉及golang中的libp2p库:https://github.com/libp2p/go-libp2p

该视频解释了背景:https://www.youtube.com/watch?v=hP0hSZ7E7_Y

网络中的对等点通过缓冲流 rw 进行通信。对于每个新的连接对等点,都会创建一个新流,使用地址将其连接到现有对等点。这意味着存在多个流,但并非所有对等点都直接相互连接。使用这些流,对等方可以通过

从中读取和写入数据

rw := bufio.NewReadWriter(bufio.NewReader(stream),bufio.NewWriter(stream))

通过写入消息 `rw.WriteString("message"),rw.Flush()``

并通过 message := rw.ReadString(rw) 读取此消息。

由于对等点并非全部连接,因此它们仅接收来自直接连接的对等点的消息,如果存在多个连接,甚至不会接收所有来自直接连接的对等点的消息。

视频中确实提到了这个问题,时间是 09:45 左右。视频的作者表示,可以轻松修改它,不仅可以向直接连接的对等点发送消息,还可以向多个主机发送消息。但这怎么办呢?

我的目标是从一个对等点发送消息,并且网络中的所有其他对等点(包括非直接连接的对等点)都可以接收(并应答)该消息。


解决方案


在 libp2p 中发送多播或广播消息的最佳方式是使用 PubSub,因此订阅主题的每个节点都会收到有关已发送消息的通知,尽管没有直接连接到发送者节点。

您可以找到使用 Pubsub here 的示例实现。它使用 libp2p 中的 gossibSub 实现。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用libp2p在多个主机之间建立流并发送数据》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>