From 693b262b7c3c56a9d05a6b5ded21ff5a31a547c6 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 5 Dec 2025 21:03:34 -0300 Subject: [PATCH] CLOSED answers to dummyReq are also ok. --- abstract-relay.ts | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/abstract-relay.ts b/abstract-relay.ts index 56a1939..6fc6cbb 100644 --- a/abstract-relay.ts +++ b/abstract-relay.ts @@ -37,7 +37,7 @@ export class AbstractRelay { public baseEoseTimeout: number = 4400 public connectionTimeout: number = 4400 public publishTimeout: number = 4400 - public pingFrequency: number = 20000 + public pingFrequency: number = 29000 public pingTimeout: number = 20000 public resubscribeBackoff: number[] = [10000, 10000, 10000, 20000, 20000, 30000, 60000] public openSubs: Map = new Map() @@ -209,20 +209,30 @@ export class AbstractRelay { }) } - private async waitForDummyReq() { - return new Promise((resolve, _) => { + private waitForDummyReq() { + return new Promise((resolve, reject) => { + if (!this.connectionPromise) return reject(new Error(`no connection to ${this.url}, can't ping`)) + // make a dummy request with expected empty eose reply // ["REQ", "_", {"ids":["aaaa...aaaa"], "limit": 0}] - const sub = this.subscribe( - [{ ids: ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'], limit: 0 }], - { - oneose: () => { - sub.close() - resolve(true) + try { + const sub = this.subscribe( + [{ ids: ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'], limit: 0 }], + { + oneose: () => { + resolve(true) + sub.close() + }, + onclose() { + // if we get a CLOSED it's because the relay is alive + resolve(true) + }, + eoseTimeout: this.pingTimeout + 1000, }, - eoseTimeout: this.pingTimeout + 1000, - }, - ) + ) + } catch (err) { + reject(err) + } }) }