broadcastAnnouncement static method

Future<void> broadcastAnnouncement({
  1. required String name,
  2. required String host,
  3. required int port,
  4. required String projectId,
  5. required String appName,
  6. String version = '0.1.0',
  7. RawDatagramSocket? customSocket,
})

Broadcasts an announcement packet from a dev server on the local network.

Implementation

static Future<void> broadcastAnnouncement({
  required String name,
  required String host,
  required int port,
  required String projectId,
  required String appName,
  String version = '0.1.0',
  RawDatagramSocket? customSocket,
}) async {
  final payload = jsonEncode({
    'type': 'bloom_dev_server',
    'service': 'bloom_dev_server',
    'name': name,
    'project': projectId,
    'host': host,
    'ip': host,
    'port': port,
    'projectId': projectId,
    'appName': appName,
    'version': version,
    'timestamp': DateTime.now().toIso8601String(),
  });

  final bytes = utf8.encode(payload);

  if (customSocket != null) {
    customSocket.send(bytes, InternetAddress('255.255.255.255'), udpPort);
  } else {
    try {
      final socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, 0);
      socket.broadcastEnabled = true;
      socket.send(bytes, InternetAddress('255.255.255.255'), udpPort);
      socket.close();
    } catch (_) {}
  }
}