feat(NIP-15): Implement NIP15

NIP15 sends an EOSE notice to clients after all stored events are sent
to allow loading indicators and other use cases.
This commit is contained in:
Semisol
2022-05-30 21:43:00 -05:00
committed by Greg Heartsfield
parent 538d139ebf
commit a36ad378f6
3 changed files with 16 additions and 5 deletions
+9 -4
View File
@@ -424,11 +424,16 @@ async fn nostr_server(
},
Some(query_result) = query_rx.recv() => {
// database informed us of a query result we asked for
client_received_event_count += 1;
// send a result
let subesc = query_result.sub_id.replace("\"", "");
let send_str = format!("[\"EVENT\",\"{}\",{}]", subesc, &query_result.event);
ws_stream.send(Message::Text(send_str)).await.ok();
if query_result.event == "EOSE" {
let send_str = format!("[\"EOSE\",\"{}\"]", subesc);
ws_stream.send(Message::Text(send_str)).await.ok();
} else {
client_received_event_count += 1;
// send a result
let send_str = format!("[\"EVENT\",\"{}\",{}]", subesc, &query_result.event);
ws_stream.send(Message::Text(send_str)).await.ok();
}
},
// TODO: consider logging the LaggedRecv error
Ok(global_event) = bcast_rx.recv() => {