From 9d345a8f015ef9f213ae98b890e5cee0c6085d03 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Sun, 26 Feb 2023 21:23:09 -0300 Subject: [PATCH] configurable list and get timeout on relay. --- package.json | 2 +- pool.ts | 5 ++++- relay.ts | 14 +++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bd3c395..b05c8fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nostr-tools", - "version": "1.7.0", + "version": "1.7.1", "description": "Tools for making a Nostr client.", "repository": { "type": "git", diff --git a/pool.ts b/pool.ts index 2abd184..24a89bc 100644 --- a/pool.ts +++ b/pool.ts @@ -29,7 +29,10 @@ export class SimplePool { const existing = this._conn[nm] if (existing) return existing - const relay = relayInit(nm) + const relay = relayInit(nm, { + getTimeout: this.getTimeout * 0.9, + listTimeout: this.getTimeout * 0.9 + }) this._conn[nm] = relay await relay.connect() diff --git a/relay.ts b/relay.ts index 008be13..4cc374e 100644 --- a/relay.ts +++ b/relay.ts @@ -35,7 +35,15 @@ export type SubscriptionOptions = { alreadyHaveEvent?: null | ((id: string, relay: string) => boolean) } -export function relayInit(url: string): Relay { +export function relayInit( + url: string, + options: { + getTimeout?: number + listTimeout?: number + } = {} +): Relay { + let {listTimeout = 3000, getTimeout = 3000} = options + var ws: WebSocket var openSubs: {[id: string]: {filters: Filter[]} & SubscriptionOptions} = {} var listeners: { @@ -252,7 +260,7 @@ export function relayInit(url: string): Relay { let timeout = setTimeout(() => { s.unsub() resolve(events) - }, 1500) + }, listTimeout) s.on('eose', () => { s.unsub() clearTimeout(timeout) @@ -268,7 +276,7 @@ export function relayInit(url: string): Relay { let timeout = setTimeout(() => { s.unsub() resolve(null) - }, 1500) + }, getTimeout) s.on('event', (event: Event) => { s.unsub() clearTimeout(timeout)