aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-01-05 07:43:24 -0800
committerAdam Soltys <[email protected]>2023-01-05 07:43:24 -0800
commitacd94921684759ac3d582ec87db7ceaeb2fefe45 (patch)
tree314cca91818db2fd3ecbb58cc35f2963b8f506e6 /lib
parent572bf373a9771dfa11ccaf027a45c0c1611a26a8 (diff)
downloadcoinos-server-acd94921684759ac3d582ec87db7ceaeb2fefe45.tar.gz
coinos-server-acd94921684759ac3d582ec87db7ceaeb2fefe45.zip
proxy to nostr api
Diffstat (limited to 'lib')
-rw-r--r--lib/nostr.js32
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,