mirror of
https://github.com/vishalxl/nostr_console.git
synced 2025-05-29 17:20:09 +02:00
Rather than WebSocket based on dart.io, used web_socket_channel , which is an official dart package for cross-platform WebSockets
This commit is contained in:
parent
572d64aca7
commit
de7e624fa3
@ -12,7 +12,7 @@ const request = "request";
|
||||
|
||||
void printEventsAsTree(events) {
|
||||
if( events.length == 0) {
|
||||
stdout.write("events length = 0\n");
|
||||
print("events length = 0");
|
||||
return;
|
||||
}
|
||||
events.removeWhere( (item) => item.eventData.kind != 1 );
|
||||
@ -34,13 +34,9 @@ Future<void> main(List<String> arguments) async {
|
||||
List<Event> events = [];
|
||||
int numEvents = 6;
|
||||
|
||||
String requestString = "";
|
||||
//final parser = ArgParser()..addFlag(request, negatable: false, abbr: 'r')..addOption(request);
|
||||
final parser = ArgParser()..addOption(request, abbr: 'r');
|
||||
|
||||
ArgResults argResults = parser.parse(arguments);
|
||||
|
||||
|
||||
if( argResults[request] != null) {
|
||||
stdout.write("got argument request ${argResults[request]}");
|
||||
sendRequest("wss://nostr-pub.wellorder.net", argResults[request], events);
|
||||
@ -51,6 +47,11 @@ Future<void> main(List<String> arguments) async {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// the default in case no arguments are given is:
|
||||
// get a user's events, then from its type 3 event, gets events of its follows,
|
||||
// then get the events of user-id's mentioned in p-tags of received events
|
||||
// then display them all
|
||||
getUserEvents(defaultServerUrl, userPublickey, events, numEvents);
|
||||
|
||||
print('waiting for user events to come in');
|
||||
@ -70,7 +71,7 @@ Future<void> main(List<String> arguments) async {
|
||||
print('====================all events =================');
|
||||
|
||||
List<String> pTags = getpTags(events);
|
||||
stdout.write("Total number of pTags = ${pTags.length}\n");
|
||||
print("Total number of pTags = ${pTags.length}\n");
|
||||
|
||||
for(int i = 0; i < pTags.length; i++) {
|
||||
getUserEvents( defaultServerUrl, pTags[i], events, 10);
|
||||
|
@ -2,6 +2,9 @@
|
||||
import 'dart:io';
|
||||
import 'package:nostr_console/nostr_console_ds.dart';
|
||||
|
||||
import 'package:web_socket_channel/io.dart';
|
||||
import 'package:web_socket_channel/status.dart' as status;
|
||||
|
||||
int getLatestNum = 2;
|
||||
|
||||
String getSubscriptionRequest(String publicKey, int numUserEvents) {
|
||||
@ -18,15 +21,15 @@ void handleSocketError() {
|
||||
* @class Relays Contains connections to all relays.
|
||||
*/
|
||||
class Relays {
|
||||
Map<String, Future<WebSocket> > relays;
|
||||
Map<String, IOWebSocketChannel > relays;
|
||||
List<String> users; // is used to that duplicate requests aren't sent for same user
|
||||
|
||||
Relays(this.relays, this.users);
|
||||
|
||||
factory Relays.relay(String relay) {
|
||||
Future<WebSocket> fws = WebSocket.connect(relay);
|
||||
IOWebSocketChannel fws = IOWebSocketChannel.connect(relay);
|
||||
print('In Relay.relay: connecting to relay $relay');
|
||||
Map<String, Future<WebSocket>> r = Map();
|
||||
Map<String, IOWebSocketChannel> r = Map();
|
||||
r[relay] = fws;
|
||||
return Relays(r, []);
|
||||
}
|
||||
@ -50,7 +53,7 @@ class Relays {
|
||||
|
||||
void sendRequest(String relay, String request, List<Event> events) {
|
||||
|
||||
Future<WebSocket>? fws;
|
||||
IOWebSocketChannel? fws;
|
||||
if(relays.containsKey(relay)) {
|
||||
fws = relays[relay];
|
||||
}
|
||||
@ -58,10 +61,9 @@ class Relays {
|
||||
print('connecting to $relay');
|
||||
|
||||
try {
|
||||
fws = WebSocket.connect(relay);
|
||||
fws = IOWebSocketChannel.connect(relay);
|
||||
relays[relay] = fws;
|
||||
fws.then((WebSocket ws) {
|
||||
ws.listen(
|
||||
fws.stream.listen(
|
||||
(d) {
|
||||
//print(d);
|
||||
Event e;
|
||||
@ -76,27 +78,27 @@ class Relays {
|
||||
}
|
||||
},
|
||||
onError: (e) { print("error"); print(e); },
|
||||
onDone: () { print('in onDone'); ws.close() ; }
|
||||
);}).catchError((err) {
|
||||
print('Error: Could not connect to $relay');
|
||||
onDone: () { print('in onDone'); }
|
||||
);
|
||||
//print('Error: Could not connect to $relay');
|
||||
//throw Exception('Some arbitrary error');
|
||||
});
|
||||
|
||||
} on WebSocketException {
|
||||
print('WebSocketException exception');
|
||||
return;
|
||||
} catch(e) {
|
||||
print('exception generic');
|
||||
print('exception generic $e');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
print('sending request: $request to $relay');
|
||||
fws?.then((WebSocket ws) { ws.add(request); });
|
||||
fws?.sink.add(request);
|
||||
|
||||
}
|
||||
|
||||
Future<WebSocket>? getWS(String relay) {
|
||||
IOWebSocketChannel? getWS(String relay) {
|
||||
return relays[relay];
|
||||
}
|
||||
|
||||
|
@ -14,3 +14,4 @@ dev_dependencies:
|
||||
test: ^1.16.0
|
||||
dependencies:
|
||||
args: ^2.3.1
|
||||
web_socket_channel: ^2.2.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user