Как отправить данные на несколько хостов, используя потоки golang libp2p? - PullRequest
0 голосов
/ 10 апреля 2019

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

Моя цель - отправить сообщение от одного узла, и чтобы все остальные узлы в сети, в том числе и не подключенные напрямую, могли получать (и отвечать) его.

...