request method
Implementation
Future<Map<String, dynamic>> request(
String url, Filter filter, Function(Nip01Event) onEvent) {
WebSocket? webSocket = webSockets[url];
if (webSocket != null) {
// TODO should check if connected / state
String id = Random().nextInt(4294967296).toString();
List<dynamic> request = ["REQ", id, filter.toMap()];
final encoded = jsonEncode(request);
var completer = Completer<Map<String, dynamic>>();
_completers[id] = completer;
_subscriptions[id] = onEvent;
webSocket.add(encoded);
var future =
completer.future.timeout(const Duration(seconds: 10), onTimeout: () {
// log("Rtimeout: ${id}, $url");
return {};
});
return future;
}
return Future.error("invalid relay $url");
}