broadcastAnnouncement static method
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 (_) {}
}
}