diff options
| author | Adam Soltys <[email protected]> | 2023-01-05 07:43:24 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-05 07:43:24 -0800 |
| commit | acd94921684759ac3d582ec87db7ceaeb2fefe45 (patch) | |
| tree | 314cca91818db2fd3ecbb58cc35f2963b8f506e6 /lib | |
| parent | 572bf373a9771dfa11ccaf027a45c0c1611a26a8 (diff) | |
| download | coinos-server-acd94921684759ac3d582ec87db7ceaeb2fefe45.tar.gz coinos-server-acd94921684759ac3d582ec87db7ceaeb2fefe45.zip | |
proxy to nostr api
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/nostr.js | 32 |
1 files changed, 22 insertions, 10 deletions
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, |
