discover method
Starts listening for UDP broadcast announcements and returns a stream of discovered servers.
Implementation
Stream<List<BloomDiscoveredServer>> discover({RawDatagramSocket? customSocket}) {
_controller = StreamController<List<BloomDiscoveredServer>>.broadcast(
onCancel: stop,
);
if (customSocket != null) {
_listenToSocket(customSocket);
} else {
try {
RawDatagramSocket.bind(InternetAddress.anyIPv4, udpPort, reuseAddress: true, reusePort: true)
.then((socket) {
_socket = socket;
_socket?.broadcastEnabled = true;
_listenToSocket(socket);
}).catchError((e) {
logger.warn('BloomDevServerDiscovery: Failed to bind UDP port $udpPort: $e');
});
} catch (e) {
logger.warn('BloomDevServerDiscovery: UDP binding exception: $e');
}
}
return _controller!.stream;
}