我的问题涉及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的视频中提到了此问题。该视频的作者说,可以轻松地对此进行修改,以不仅向直接连接的对等方而且向多个主机发送消息。但是,这怎么办呢?
我的目标是从一个对等方发送消息,并且网络中的所有其他对等方(也包括未直接连接的对等方)都可以接收(并应答)它。