мой вопрос относится к библиотеке libp2p в golang: 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)
.
Поскольку одноранговые узлы не все подключены, они получают сообщения только от напрямую подключенных одноранговых узлов, и даже не от всех из них, если существует несколько подключений.
Именно эта проблема упоминается в видео, около 9:45. Автор видео говорит, что это можно легко изменить, чтобы отправлять сообщения не только напрямую подключенным партнерам, но и нескольким хостам. Но как это можно сделать?
Моя цель - отправить сообщение от одного узла, и чтобы все остальные узлы в сети, в том числе и не подключенные напрямую, могли получать (и отвечать) его.