relay method

Future<void> relay(
  1. EventModel<EventBodyModel> event, [
  2. int k = 4
])

Relays an existing event to K random peers in a Gossip-style fanout. Returns whether the event was able to be relayed to a peer.

Implementation

Future<void> relay(EventModel event, [int k = 4]) async {
  if (!client.isRunning) {
    return;
  }

  final nodes = await client.getNodes();
  if (nodes.isEmpty) {
    _logger.log('No online devices for relay');
    return;
  }

  await nodes.takeRandom(k).asyncMap((node) async {
    if (node.ipv4 case String ip) {
      await relayIP(ip, event);
    }
  });
}