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