useSubscribe, handle emitted requests in sqlite

This commit is contained in:
Martti Malmi
2024-01-18 13:47:07 +02:00
parent b7e61ebde5
commit 2ea516e636
14 changed files with 99 additions and 40 deletions

View File

@ -1,4 +1,5 @@
import { removeUndefined, throwIfOffline } from "@snort/shared";
import LRUSet from "@snort/shared/src/LRUSet";
import { mapEventToProfile, NostrEvent, NostrSystem, ProfileLoaderService, socialGraphInstance } from "@snort/system";
import { WorkerRelayInterface } from "@snort/worker-relay";
import WorkerRelayPath from "@snort/worker-relay/dist/worker?worker&url";
@ -70,9 +71,21 @@ export async function initRelayWorker() {
if (await Relay.init()) {
if (await Relay.open()) {
await Relay.migrate();
const seen = new LRUSet<string>(100);
System.on("event", async (_, ev) => {
if (seen.has(ev.id)) return;
seen.add(ev.id);
await Relay.event(ev);
});
System.on("request", async (subId, f) => {
const evs = await Relay.req(["REQ", "", ...f.filters]);
evs.forEach(ev => {
seen.add(ev.id);
queueMicrotask(() => {
System.HandleEvent(subId, { ...ev, relays: [] });
});
});
});
}
}
} catch (e) {