From acd94921684759ac3d582ec87db7ceaeb2fefe45 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 5 Jan 2023 07:43:24 -0800 Subject: proxy to nostr api --- lib/nostr.js | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/nostr.js b/lib/nostr.js index 285fdde2..8fc92be4 100644 --- a/lib/nostr.js +++ b/lib/nostr.js @@ -1,15 +1,29 @@ +import app from "$app"; +import config from "$config"; import { Relay, RelayPool } from "nostr"; import { got } from "got"; import { broadcast } from "$lib/sockets"; import store from "$lib/store"; import redis from "$lib/redis"; +import proxy from "@fastify/http-proxy"; -const relays = ["wss://relay.damus.io", "wss://nostr.coinos.io"]; +app.register(proxy, { + upstream: "http://api:9393", + prefix: "/nostr", + rewritePrefix: "", +}); + +const relays = [ + config.relay, + "wss://relay.damus.io", + "wss://nostr-pub.wellorder.net", + "wss://nostr.rocks", +]; export const pool = RelayPool(relays); pool.on("open", relay => { - if (relay.url.includes("coinos")) coinos = relay; + if (relay.url.includes(config.relay)) coinos = relay; relay.subscribe("live", { limit: 1 }); }); @@ -24,9 +38,9 @@ export let q = async (sub, query, timeout = 8000) => query.since = await redis.get(`since:${sub}`); if (now() - query.since < 3600) return r(); - coinos.on("eose", s => !rejected && s === sub && r(timeouts[sub].clear())); - - coinos.subscribe(sub, query); + coinos.on("eose", s => { + return !rejected && s === sub && r(timeouts[sub].clear()); + }); timeouts[sub] = { async clear() { @@ -47,6 +61,7 @@ export let q = async (sub, query, timeout = 8000) => }; timeouts[sub].extend(timeout); + coinos.subscribe(sub, query); }); let seen = []; @@ -79,11 +94,9 @@ pool.on("event", async (relay, sub, ev) => { seen.length > 1000 && seen.shift(); if (coinos && ev.kind < 5) { - coinos.send(["EVENT", ev]); - + // coinos.send(["EVENT", ev]); ev.user = await getUser(pubkey); - - broadcast("event", ev); + // broadcast("event", ev); } } else if (sub.includes("profile")) { let { pubkey } = ev; @@ -121,7 +134,6 @@ pool.on("event", async (relay, sub, ev) => { let pubkey = sub; ev.user = await getUser(pubkey); - // console.log(ev.user.username, "UPDATED AT", ev.user.updated) if (!ev.user.updated) { relay.subscribe(`${pubkey}:${ev.id}:profile`, { limit: 1, -- cgit v1.2.3